Description
请求示例:
{
"[]":{
"TEST_TABLE":{
"@column":"id,name",
"@Datasource":"xxxDataSource"
},
"count":"1",
"page":"0",
"query":"2"
},
"list()":"moveObj([],$..TEST_TABLE)",
"method":"GET",
"pageInfo@":"/[]/info"
}
之前用的5.3.0版本,list()的远程调用函数moveObj,会在解析处理[]后执行,现在升级到6.2.0版本,变成了先执行list()的远程调用函数moveObj,再解析处理[]。导致传递给远程调用函数moveObj的参数TEST_TABLE的值不是执行SQL后的数据,而是执行前的JSON对象。
目前我这边给list+()降低优先级解决了问题,就是已经上线的这种用法的远程调用函数都需要处理。
比对了5.3.0版本和6.2.0版本的源码,发现是针对远程调用函数的优先级定义做了变更,5.3.0版本我用的非Table内的list():moveObj,通过functionMap去批量执行,6.2.0版本变成了满足isPlus == false && isTable == false条件 通过parseFunction立即执行了,想请问下这里这么改的原因?是要修复什么问题吗?
1条答案
按热度按时间pw9qyyiw1#
为了修复这个 bug 导致 #426
可以把 API 按 APIJSON 的版本来区分,新的 HTTP API 用
/apijson/6/get
这样的版本标识,旧的保持不变,对应两套服务,一个是现有使用 APIJSON 5.3 的,另一个是使用 APIJSON 6.0+ 的。