承接上一篇,这一篇文章主要是如何根据你选中之后添加相关的字段,然后请求接口获得数据 接口是这样的: 因为只有你选中的发票才会给你申请电子发票,所以要根据选中与否进行请求参数的动态添加。 直接上代码
顺晟科技
2021-07-09 10:32:13
83
这个问题从标准层面来讲,是因为这样符合规范。
前端请求接口,后端直接给个字符串或者数字这合适么……转态码也没有,message也没有,让前端怎么判断,怎么输出错误信息?
至少格式也得是:
{
data: xxx,
code: 200 ,
msg: 'success'
}
这种格式吧?
从代码角度讲就直接上angularjs源码了——
拿这个举例(备注:看到data = true了吧?这个接口就是之前后台直接传了true给我,虽然没报错但是拿不到这个布尔值,我debug的时候截的图)。
angular.js 这个文件里的这个方法:defaultHttpResponseTransform,就是处理后台返回的结果的。
看到我断点的那行了吧?tempData就是后台的返回值。然后要调用fromJson这个方法来处理一下。下面接着看这个方法都干啥了——
先判断是不是字符串,如果是的话就转为json。
因为这里默认后台按照标准的规范来传。一个json对象里有data有msg有code的那种。就算没有,也至少是个对象。所以这里传进来的是JSON.stringify过的json对象。肯定是字符串了,调用JSON.parse后再返回,前端就能拿到response.id这样的值了。
但是,如果是后台只传了true,也能被JSON.parse,所以不会报错。但如果后台返回的结果是普通字符串比如'aabgd',这里就会报错了。
报错信息如下:
Unexpected token a in JSON at position 0
我忘截图了。
验证一下——
如果后台直接返回了数组,那么接口那里写上:isArray : true就行。比如这样——
所以!以后再有后台的人返回接口数据直接给字符串或者布尔值,前端拿不到的时候,不用畏畏缩缩的求后台改成map,直接把这篇文章甩给他!
不仅不规范,框架自己还做了校验。我为了你一个不规范的接口我去改源码吗?!
不服你来打我呀?有意见找领导,让我们换框架、升级重构产品呀~~
23
2022-09
23
2022-09
13
2022-09
13
2022-09
13
2022-09
13
2022-09