你可以从
axios
的响应对象中提取
状态码
。
如果你打印响应对象(如下图所示),你可以看到响应对象中所有的对象。其中之一是
状态对象
。
![enter image description here](https://istack.dev59.com/9FdUm.webp)
response.status
会给你发送自服务器的状态码。
axios.get("http://localhost:3000/testing").then((response)=>{
console.log("response ",response);
if(response.status == 200){
}
else if(response.status == 202){
}
else if(response.status == 301){
}
}).catch((err)=>{
console.log("err11 ",err);
})
在服务器端,您可以使用
res.status()
方法显式发送任何状态码,有关详细信息,请参阅
this documentation。
app.get('/testing',(req, res)=> {
res.status(202).send({"res" : "hi"});
});
更新:
默认情况下,@nuxtjs/axios
在 .then((response))
中返回 response.data
。
$axios.onResponse
事件将有完整的响应对象访问权限。
你需要设置拦截器来拦截 $axios.onResponse
事件并修改响应对象。
在插件目录下创建一个插件,plugin/axios.js
。
在 nuxt.config.js
中更新 plugins
部分:plugins : ['~/plugins/axios']
。
export default function ({ $axios, redirect }) {
$axios.onResponse(res=>{
console.log("onResponse ", res);
res.data.status = res.status;
return res;
})
}
在这个拦截器中的
res对象
中,您将拥有所有值(如我第一张截图中所示)。但是这个
res对象
不会被原样返回,只有
res.data
被返回到我们的程序中。
我们可以更新
res.data
中的内容,然后像我的程序中一样返回
res对象
res.data.status = res.status;
。
现在,当
axios
返回
res.data
时,我们将可以在
.then((response))
promise中的
response
对象中访问
res.data.status
值。
您可以在
this.$axios
中使用
response.status
访问状态。
this.$axios.$get("url").then((response) =>{
console.log("status ",response.status);
}).catch((err) => {
console.log("res err ",err);
});