代码问题之外,axios请求没进入then,进入catch的情况
2020-07-19 04:41
1561 查看
代码问题之外,axios请求没进入then,进入catch的情况
小编在一次工作中遇到了这个情况,有些项目对请求返回数据是有规范的,写服务的不知道,调服务的我 也不知道,就挠头苦想,花费了很多时间也没琢磨个所以然来。这里就举个栗子还原一下现场~
原因:前端项目对请求响应进行了过滤操作
这里前端发请求,then代码块没有代码错误
let url = '/fm/queryByNeName?neName=' + this.objName Vue.axios.get(url).then(response => { this.logger.info('**SUCCESS**') if (response !== undefined && response !== null) { this.List = response } }).catch(err => { this.logger.info('--ERROR--' + err.status) })
而且请求响应正常,数据也成功捞出来了
{"meta":{"code":"20000","message":"OK"},"data":[]}
这个时候在F12控制台可以看到,请求返回结果时却执行了catch,没执行then
ERROR--undefined
看似一切正常,但是结果没有得到我们想要的,原因是因为前端设置了类似响应过滤的操作。
直接上代码:
function handleResponseByBusinessCode (code, store, res) { // 部分代码不方便展示就没有粘贴,不影响理解 if (_.isEqual('200', code)) { return _.isNull(res.data) || (res instanceof Blob) || ((res + '') === '[object Blob]') ? res : res.data } else if (_.isEqual('300', code)) { return res } else if (['304', '305', '306'].includes(code)) { return res } else { Notice.error({ title: res.meta ? res.meta.message : '后台服务异常', duration: 5 })
这个方法,会在执行then方法之前会对响应结果进行过滤,会根据状态码Code进行对应的操作,上面请求响应数据返回的状态码为20000,所以会执行else分支,之后就会进入catch,而不是then,这个时候就要找写这个接口的人告诉他返回数据里的Code值要按照项目规范写。到了这里相信你已经知道自己写的代码是正常,但是为什么没有执行then了吧。
============================== 一条美丽的分割线 =================================
- 有些读者看到这就会发现,按照上面请求响应的数据结构,代码应该写成
this.List = response.data
才对呀,其实这里代码没有写错,原因也是因为这个方法对响应的数据进行了拆解重组,使得data摇身一变,成为了response。
温馨提示:在项目中如果遇到了自己花了较长时间也没有解决的问题,记得先要去问组里的大佬,可不能像小编一样埋头苦找呀!
💗💗这篇文章如果帮到了您,请给个鼓励吧!💗💗
相关文章推荐
- 关于后端允许跨域后,axios的post请求仍显示跨域问题
- vue项目中axios请求网络接口封装的示例代码
- CORS跨域问题:axios请求时报错"...has been blocked by CORS policy..."
- vue项目在ie9中碰到的问题——axios请求拒绝访问
- vue中axios防止多次触发终止多次请求的示例代码(防抖)
- vue中axios请求的封装实例代码
- Obj-c代码静态扫描 ios代码静态扫描的问题
- iOS 网络图片处理问题中,怎么解决一个相同的网络地址重复请求的问题
- 问题描述:网关或者代理服务器使用的是ISA防火墙;当客户端浏览网页时,弹出的错误代码: 500 internal server error。不支持请求(50)
- RuntimeException的特殊情况&&[C++] 有人会在程序中try catch吗?&&什么样的问题需要用try catch语句执行
- ios应用增加给appstore评分和进入app安装页面代码功能
- iOS Autolayout情况下,ViewController嵌套时,childViewController的Frame异常问题
- IOS开发之——ASIHTTPRequest请求时,发送了2次请求问题解决
- 随手记今天跟的几个iOS项目代码的问题
- ios--关于子线程发送网络请求接受不到响应问题
- iOS appstore评分和进入app安装页面代码=打电话、发短信、发邮件功能开发,
- iOS开发工具-如何使用网络封包分析工具Charles,通过配置proxy对http、https、tcp、udp 等协议的请求响应过程交互信息进行分析、判断、解决我们移动开发中的遇到的各种实际问题。
- iOS小问题----数据请求未完成造成的crash问题(AFN)
- iOS网络请求下来的数据显示时出现的问题
- ios 网络请求总结加强对中文的处理 问题:URL不允许写中文 在GET请求中,相关代码段打断点以验证。