uni-app是否有考虑在uni.request的回调中增加请求参数信息?
uni-app是否有考虑在uni.request的回调中增加请求参数信息?
在多域名接口请求中,回调参数中没有 url 地址或者参数,会导致 uni.addInterceptor 难以处理错误信息,请问此类问题,是否有相关的建议。
假设,我请求了两个域名的接口,返回了不同的数据:
uni.request({
url: 'http://aaa.com/article?token=1',
success(res) {
if (res.data.code === 1) {
console.log('请求成功,展示数据');
} else {
console.log('请求错误,显示错误');
}
},
});
uni.request({
url: 'http://bbb.com/article?token=2',
success(res) {
if (res.data.code === 0) {
console.log('请求成功,展示数据');
} else {
console.log('请求错误,显示错误');
}
},
});
我设置了一个拦截器,期望实现下面的功能:
uni.addInterceptor('request', {
success(args) {
let url = '';
let ok_code = null;
if (url === 'aaa.com') {
ok_code = 1;
} else if (url === 'bbb.com') {
ok_code = 0;
}
if (res.data.code === ok_code) {
console.log('请求成功,展示数据');
} else {
console.log('请求错误,显示错误');
}
},
});
如上所示,url 在 success 方法中无法获取。
如果进一步优化,uni.addInterceptor 针对 request 可以设置多个拦截器,aaa.com 一个,bbb.com 一个,以达到最佳插件化开发的目的。
更多关于uni-app是否有考虑在uni.request的回调中增加请求参数信息?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
HBuilderX 3.7.13.20230411-alpha 已修复。
更多关于uni-app是否有考虑在uni.request的回调中增加请求参数信息?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
未搜到HBuilderX 3.7.13.20230411-alpha
遇到了同样的问题,我想在在success里获取请求参数,都获取不了,根本没办法做其他事情
方案1. 拦截器 success, fail, complete 增加第二个参数 params(本次调用的参数)
方案2. 允许在拦截器的 invoke 方法中再次调用 addInterceptor,removeInterceptor ,这样 invoke 中判断参数,动态添加不同的拦截器,但是需要自己处理重复执行时,不要add多次重复的拦截器
请问如何增加第二个参数 params
回复 zzz_01: 以上只是针对该需求的讨论,对应功能不一定支持 提供下你的 vue版本及目标平台,这边提供下方案1的临时解决方案
回复 DCloud_UNI_WZF: vue2, 百度及微信小程序平台
回复 DCloud_UNI_WZF: 第二种如何实现呢
回复 zzz_01: 下面提供的临时方案中也包括第二种的实现,注意:上述方案处于需求讨论阶段,不一定对外支持
回复 DCloud_UNI_WZF: 多谢,我尝试一下
vue2 临时解决方案:
微信小程序 替换 HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/uni-mp-weixin/dist/index.js 为附件文件
百度小程序 替换 HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/uni-mp-baidu/dist/index.js 为附件文件
我按照你的替换之后,确实能够通过params参数获取请求的信息,但是感觉不太现实呢,难道我一个小组成员的开发者都需要这么替换Hbuilder吗?有没有更实用的方法?
vue2 app该如何获取(已解决)
解决了,把请求重新封装下


