3***@qq.com
3***@qq.com
  • 发布:2024-03-29 09:49
  • 更新:2024-06-26 15:29
  • 阅读:259

【报Bug】拦截器拦截请求处理请求返回的值,为什么没有效果?

分类:uni-app

产品分类: uniapp/H5

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 4.07

浏览器平台: Chrome

浏览器版本: 最新chrome

项目创建方式: HBuilderX

示例代码:

interceptor.js中的代码


const BASEURL = 'http://ys.wgudu.com';  

uni.addInterceptor('request', {  
    invoke(args) {  
        args.url = BASEURL + args.url;  
    },  
    returnValue() {  
        console.log('interceptor');  
        return { data: [] };  
    }  
});  

index.vue中请求代码


uni.request({  
        url: '/api.php/provide/vod',  
        data: {  
            ac: 'list'  
        },  
        success(data) {  
            console.log(data);  
        }  
    })  

操作步骤:

拦截器中的returnValue处理返回内容不生效

预期结果:

按理说在success函数中data变量应该是一个对象里面只有一个data属性的空数组才对

实际结果:

{  
    "data": {  
        "code": 1,  
        "msg": "数据列表",  
        "page": 1,  
        "pagecount": 2672,  
        "limit": "20",  
        "total": 53432,  
    },  
    "statusCode": 200,  
    "header": {  
        "connection": "keep-alive",  
        "content-encoding": "gzip",  
        "content-type": "text/html;charset=utf-8",  
        "date": "Fri, 29 Mar 2024 01:46:18 GMT",  
        "server": "nginx",  
        "transfer-encoding": "chunked",  
        "vary": "Accept-Encoding"  
    },  
    "cookies": [],  
    "errMsg": "request:ok"  
}  

bug描述:

通过拦截器拦截请求,处理请求结果返回的值,按理说在success函数中data变量应该是一个对象里面只有一个data属性的空数组才对,为什么拦截器returnValue处理返回的结果无效?

2024-03-29 09:49 负责人:无 分享
已邀请:
yuhespace

yuhespace - Yule

可以在success中修改
const BASEURL = 'http://ys.wgudu.com';
uni.addInterceptor('request', {
invoke(args) {
args.url = BASEURL args.url;
},
success(args){
console.log("success",args);
args.data = []
},

你的请求类型是XMLHttpRequest,如果尝试直接修改XMLHttpRequest的数据,你想把它改为空,会报错它只是个只读的
Cannot set property response of #<XMLHttpRequest> which has only a getter
如果是promise,则可以修改

1***@163.com

1***@163.com

+1

望解决

要回复问题请先登录注册