浏览器收到响应后覆盖消息内容
The browser overwrites the content of the message after receiving the response
当我尝试从响应中获取错误消息时,我在使用 DingoAPI 和 Vue.js 时遇到了一点问题。我认为浏览器正在用默认消息替换我的自定义消息。这是我的代码:
PHP 脚本
if($request->readerId){
Return succes (this works properly)
else{
return $this->response->error(
'No reader',
400 //(or diffrent code)
);
}
Vue.js 脚本
await axios.post(API_URL + 'card/', {
some data
}, {
headers: {
headers
},
}).then(({data}) => {
context.commit(SET_RESPONSE, data);
}).catch((error) => {
console.log(error.message);
throw error
})
当我试图在网络选项卡中查看我的消息时,我可以看到(因此 DingoAPI 正确地做到了):
{"message":"No reader","status_code":400}
但是当我使用 console.log(error.message)
或试图在页面上显示它时,出现标准错误消息:
Request failed with status code 400
有没有办法用 DingoAPI 设置错误消息并在我的 .js 脚本中捕获它?
也许我需要编写自己的自定义异常?
您想要的是访问错误变量的响应数据。
console.log(error.response.data.message); // No reader
否则可以登录error.response
查看对象:
console.log(error.response);
如果您想知道为什么要打印 请求失败,状态代码为 400:
The problem is when the console.log tries to output the error, the string representation is printed, not the object structure, so you do not see the .response
property.
来源:https://github.com/axios/axios/issues/960#issuecomment-309287911
当我尝试从响应中获取错误消息时,我在使用 DingoAPI 和 Vue.js 时遇到了一点问题。我认为浏览器正在用默认消息替换我的自定义消息。这是我的代码:
PHP 脚本
if($request->readerId){
Return succes (this works properly)
else{
return $this->response->error(
'No reader',
400 //(or diffrent code)
);
}
Vue.js 脚本
await axios.post(API_URL + 'card/', {
some data
}, {
headers: {
headers
},
}).then(({data}) => {
context.commit(SET_RESPONSE, data);
}).catch((error) => {
console.log(error.message);
throw error
})
当我试图在网络选项卡中查看我的消息时,我可以看到(因此 DingoAPI 正确地做到了):
{"message":"No reader","status_code":400}
但是当我使用 console.log(error.message)
或试图在页面上显示它时,出现标准错误消息:
Request failed with status code 400
有没有办法用 DingoAPI 设置错误消息并在我的 .js 脚本中捕获它? 也许我需要编写自己的自定义异常?
您想要的是访问错误变量的响应数据。
console.log(error.response.data.message); // No reader
否则可以登录error.response
查看对象:
console.log(error.response);
如果您想知道为什么要打印 请求失败,状态代码为 400:
The problem is when the console.log tries to output the error, the string representation is printed, not the object structure, so you do not see the
.response
property.
来源:https://github.com/axios/axios/issues/960#issuecomment-309287911