即使在成功完成Rest API调用后,Axios也会发布进入catch块的消息

xghobddn  于 12个月前  发布在  iOS
关注(0)|答案(2)|浏览(84)

我的axios post请求没有返回API在不成功的401场景中返回的值。它在成功的场景中工作正常。
我的重置密码API返回的状态码,并为每一个调用的消息。当我使用 Postman 测试其输出重置密码,给出不正确的当前密码,我得到
Postman 输出:

statusCode: 401,
            headers: {
               .......
               ........
            },
body: "{"code":"NotAuthorizedException","name":"NotAuthorizedException","message":"Incorrect username or password."}" <--- This is the body output

字符串
但在我的axios文章中,它转到了catch块:

await Axios.post(resetAPIUrl, resetParams, config).then(value=> {
                    console.log(`Returned data ----> ${JSON.stringify(value)}`);
                    resolve(value);
                }).catch(error=>{
                    console.log(`Failing--->${error}`)
                    reject(error)
                });


这是我在Axios post的catch块中得到的错误:
第一个月
错误原因是正确的。但是为什么它没有进入catch块?这是一个成功的完成过程。直接从post man调用API给了我正确的输出结构。

xmakbtuz

xmakbtuz1#

Interceptor是答案。由于Axios不认为200以外的任何响应都是成功的场景,因此可以使用Interceptor来捕获其他响应:

{     
                Axios.interceptors.request.use(req=>{
                   console.log(`This is the request ---> ${req.method} ${req.url}`)
                   return req;
                })
                Axios.interceptors.response.use(res => {
                    console.log(`res status ---> ${res.status}`)
                    resolve(res)
                    return res;
                }, (error)=>{
                    console.log(`This is the error status ---> ${error.response.status}`)
                    if(error.response.status === 401){
                       resolve(error.response);
                    }
                })
                await Axios.post(resetAPIUrl, resetParams, config);

字符串

tyu7yeag

tyu7yeag2#

如果响应代码显示200,那么在.then块中,你有一些没有定义的方法或变量。检查一下!

相关问题