请问,api接口数据统一返回处理怎么做呀?可以讲一下吗?
来源:5-1 大章列表查询功能开发1

杰神
2020-05-09
请问查询出来的数据返回给客户端怎样做统一处理呀?
示例一:
{
"success" : true,
"data" : {
"type" : "first"
},
"errCode" : "SUCCESS",
"errMsg" : "请求成功",
"sysTime" : 1585546735699
}
需要在数据外层再多包裹一层统一的自定义状态码和错误信息。客户端可以根据状态码来渲染数据或者弹出后台的错误信息
示例二:
mysql表中为空的字段,返回给客户端是null。比如说有个name字段是varchar,为空返回给客户端是null。客户端需要把name展示在页面上。如果客户端是弱类型语言,直接接口里面的读取到的null展示到页面就行。如果客户端是强类型语言,本来name在客户端应该是字符串类型,结果返回的是null,在客户端那边就会直接抛错,出现页面卡死或者白屏。这是我在工作中实际碰到过的,做flutter开发,使用的是dart强类型语言,客户端会拿到接口里面的json字符串数据,转换成dart的实体类,然后通过实体类把json字符串转换为dart对象,在页面中使用。如果后台把本来应该是String类型的返回成null了,就会直接导致实体类解析数据异常,那个接口就报错了。
Text(data.openid),这个时候openid为null。
flutter的Text文本控件第一个参数,必须是String类型,不能为null,如果直接把接口的字段填进去,就会抛异常报错。让客户端处理又不实际,因为客户端不知道什么字段可能会出异常,而且也没有办法做统一处理,因为客户端拿到的是json字符串,不知道这个字段本身到底应该是什么类型,没办法做处理。
实际上客户端应该拿到的是
{
"uid": 1,
"openid": "",
"phone": "",
"nickname":"",
"email": "",
"uname": "",
"sex": 0,
"createTime":"",
"updateTime": ""
}
解决这种情况,我能想到两种方案,一种是在数据库设计的时候,设计默认值,还有一种是代码数据返回的时候,把null重新替换成该字段的字段类型所对应的默认值。比如说是String就返回“”,是int就返回0,是double就返回0.00,请问第二种情况怎么处理呀?
2回答
-
可以在vue的拦截器里统一判断返回码,再做处理。参照我们现在vue拦截器打请求日志和返回日志的地方。
我实际项目中遇到过,所有的空字段都存了个空格或0,不过这种太麻烦。springboot对返回的json可以做包装,可以百度下,类似这遍文章:https://blog.csdn.net/javakeffer/article/details/102862910
042020-05-09 -
杰神
提问者
2020-05-09
客户端即使是弱类型语言,如果是普通的字符串渲染到页面上没有关系,如果是需要做加减乘除运算,也会抛错。除去最开始给字段设置默认值。后台在接口返回的时候,是怎样避免这种情况发生的呢?
00
相似问题