当使用 Axios 发送请求并在验证返回错误时得到一个 [object Object]
的错误信息时,通常是因为 Axios 的默认错误处理器无法正确处理返回的错误对象。解决这个问题的方法是自定义 Axios 的错误处理器,并从错误对象中提取正确的错误信息。
以下是一个示例代码,展示了如何自定义 Axios 的错误处理器并提取正确的错误信息:
import axios from 'axios';
// 创建一个 Axios 实例
const instance = axios.create();
// 自定义错误处理器
instance.interceptors.response.use(
response => response,
error => {
// 错误对象的响应数据字段
const { response } = error;
// 如果错误对象有响应数据字段
if (response) {
// 提取错误信息
const { data, status } = response;
const errorResponse = {
message: data.message || '请求错误',
status
};
return Promise.reject(errorResponse);
}
return Promise.reject(error);
}
);
// 使用自定义实例发送请求
instance.get('https://api.example.com/your-endpoint')
.then(response => {
// 处理成功响应
console.log(response.data);
})
.catch(error => {
// 处理错误响应
console.error(error);
});
在上面的示例中,我们创建了一个自定义的 Axios 实例,并使用 interceptors
属性来定义一个响应拦截器。在拦截器的错误回调函数中,我们首先检查错误对象中是否有响应数据字段,然后从中提取错误信息并返回一个带有错误消息和状态码的 Promise 对象。这样,当请求出错时,我们将能够正确地获取到错误信息并进行处理。
请注意,在使用自定义实例发送请求时,我们使用了 instance.get
而不是普通的 axios.get
。这是因为我们希望使用自定义的实例来处理请求和响应。