现象
amis框架很方便,但它存在的不够人性化的问题是,传输数据问题,比如下面的例子
"api": {
"method": "post",
"url": "http://localhost:10044/tag/listTagByPage",
"data": {
"queryParams": [
{
"name": "id",
"relation": "eq",
"value": "${id}"
},
{
"name": "name",
"relation": "like",
"value": "${name}"
},
{
"name": "lastOperator",
"relation": "eq",
"value": "${lastOperator}"
},
{
"name": "platform",
"relation": "in",
"value": "${platformName|split|default}"
},
{
"name": "purpose.0",
"relation": "in",
"value": "${purpose|split|default}"
},
{
"name": "idType",
"relation": "in",
"value": "${idType|split|default}"
}
],
"sortParams": [
{
"name": "id",
"direction": "desc"
},
{
"name": "createTime",
"direction": "desc"
}
],
我们通常在api的data中去配置对应需要传给后端的数据,但amis比较难受的点就这这里,一共两方面
- 只要写在data中就一定会传到后台
- 赋值后取消,会发送空值到后台
简单解释一下,什么意思
首先,如果我在amis中配置了
{
"name": "id",
"relation": "eq",
"value": "${id}"
},
那当amis向后段发请求的时候,这个字段就一定会发过去,
比如当id等于空的时候,我不想发这个字段,但它还是会发过去,就没有办法去控制发什么,不发什么.发送内容如下:
{
"name": "id",
"relation": "eq"
}
另外,如果之前我让id等于001,比如
{
"name": "id",
"relation": "eq",
"value": "001"
}
但之后我删除了id的值,value的值还是会发送到后台,但是是空值
{
"name": "id",
"relation": "eq",
"value": ""
}
结论
所以在时候amis前端框架的时候,后台通常需要对前端传过来的值,进行空值判断,这就比较麻烦,需要根据不同字段的特性进行不同的判空操作