我在使用nuxt的$fetch请求接口时,后端返回401状态码,返回503状态码等,catch到的异常信息都是一样的,但是我需要根据响应状态码来作出相应的操作,求解我该怎么办?
我的请求代码写在onMounted周期方法中:
try {
$fetch<ApiResponse<StrokePO>>('/stroke/api/list',{
baseURL:useRuntimeConfig().public.baseURL,
method:'POST',
body:{role:'0'},
onRequestError:({request})=>{
console.log(request);
},
onResponse:({response})=>{
console.log(response.status);
},
onResponseError:({response})=>{
console.log(response.status);
}
}).then((res)=>{
results.value = res.data
})
}catch(err) {
console.log(err)
}
后端未认证写法:
if (StringUtils.isEmpty(sessionToken)) {
// 响应未认证!
response.setStatusCode(HttpStatus.UNAUTHORIZED);
// 结束请求
return response.setComplete();
}
SessionContext context = redisSessionHelper.getSession(sessionToken);
boolean isisValid = redisSessionHelper.isValid(context);
//session已经失效
if (!isisValid) {
// 响应未认证!
response.setStatusCode(HttpStatus.UNAUTHORIZED);
// 结束请求
return response.setComplete();
}
浏览器控制台报错:
我尝试在onResponseError回调中获取401状态码,但是在浏览器401之后,这个回调并没有被触发,但是触发了onRequestError回调,然而这并不能取到401状态码,在catch块中取不到401状态码的相关信息,我也尝试了使用nuxt的useError,但是也没能取到响应状态码,我的具体做法是在catch块中使用useError().value?.statusCode,但结果是undefined,请问大神们哪里出错了或者有什么解决方案吗(补充信息:nuxt的$fetch使用的是ofetch项目,但是我翻看之后仍未解决问题,nuxt版本:"nuxt": "^3.15.1")
跨域了,后端加 CORS 头。
正常来说出错的错误码肯定是不同的。