7***@qq.com
7***@qq.com
  • 发布:2021-08-19 18:06
  • 更新:2023-06-07 11:04
  • 阅读:1505

是否有考虑在 uni.request 的回调中增加请求参数信息?

分类:uni-app

在多域名接口请求中,回调参数中没有 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 一个,以达到最佳插件化开发的目的。

2021-08-19 18:06 负责人:DCloud_UNI_WZF 分享
已邀请:

最佳回复

DCloud

DCloud

HBuilderX 3.7.13.20230411-alpha 已修复。

  • zzz_01

    未搜到HBuilderX 3.7.13.20230411-alpha


    2023-04-11 20:24

9***@qq.com

9***@qq.com

遇到了同样的问题,我想在在success里获取请求参数,都获取不了,根本没办法做其他事情

DCloud_UNI_FXY

DCloud_UNI_FXY

方案1. 拦截器 success, fail, complete 增加第二个参数 params(本次调用的参数)
方案2. 允许在拦截器的 invoke 方法中再次调用 addInterceptor,removeInterceptor ,这样 invoke 中判断参数,动态添加不同的拦截器,但是需要自己处理重复执行时,不要add多次重复的拦截器

  • zzz_01

    请问如何增加第二个参数 params


    2023-03-30 20:00

  • DCloud_UNI_WZF

    回复 zzz_01: 以上只是针对该需求的讨论,对应功能不一定支持

    提供下你的 vue版本及目标平台,这边提供下方案1的临时解决方案


    2023-03-31 16:19

  • zzz_01

    回复 DCloud_UNI_WZF: vue2, 百度及微信小程序平台


    2023-03-31 16:33

  • zzz_01

    回复 DCloud_UNI_WZF: 第二种如何实现呢


    2023-03-31 16:45

  • DCloud_UNI_WZF

    回复 zzz_01: 下面提供的临时方案中也包括第二种的实现,注意:上述方案处于需求讨论阶段,不一定对外支持


    2023-03-31 17:05

  • zzz_01

    回复 DCloud_UNI_WZF: 多谢,我尝试一下


    2023-03-31 17:12

DCloud_UNI_WZF

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 为附件文件

  • 7***@qq.com

    我按照你的替换之后,确实能够通过params参数获取请求的信息,但是感觉不太现实呢,难道我一个小组成员的开发者都需要这么替换Hbuilder吗?有没有更实用的方法?


    2023-10-16 16:05

1***@qq.com

1***@qq.com

vue2 app该如何获取(已解决)

1***@qq.com

1***@qq.com

解决了,把请求重新封装下

要回复问题请先登录注册