在使用 Axios 进行 HTTP 请求时,如果请求失败,Axios 会生成一个错误对象。我们可以通过捕获这个错误对象来获取 HTTP 状态码。当请求出错时,Axios 错误对象(通常是 error
)会包含一个 response
属性,它是一个包含了 HTTP 响应信息的对象。response
对象进一步包含了 status
属性,它就是 HTTP 状态码。
以下是捕获 Axios 错误并从中获取状态码的基本方法:
javascriptaxios.get('/some-endpoint') .then(response => { // 请求成功,处理响应数据 console.log(response.data); }) .catch(error => { // 请求失败,处理错误 if (error.response) { // 服务器至少返回了错误代码和消息 console.log("Error Status Code:", error.response.status); console.log("Error Response Data:", error.response.data); console.log("Error Response Headers:", error.response.headers); } else if (error.request) { // 请求已经发出,但是没有收到响应 console.log("No response received:", error.request); } else { // 发生了一些在设置请求时触发的错误 console.log("Error Message:", error.message); } // 其他错误处理 });
在这段代码中,我们首先尝试对某个端点发起 GET 请求。如果请求成功,我们可以在 .then()
部分处理响应。如果请求失败,Axios 会调用 .catch()
部分的代码。在 .catch()
中,我们首先检查 error.response
是否存在。如果存在,我们就可以从中读取状态码,这通常意味着服务器处理了请求但返回了一个错误状态码。如果 error.response
不存在,我们还可以检查 error.request
来决定下一步的操作。如果 error.request
也不存在,那么问题可能是在设置请求时发生的,比如一个无效的 URL。
例如,如果后端服务返回了一个 404 状态码,表示找不到请求的资源,我们就可以在 error.response.status
中看到这个状态码。如果返回了 500 状态码,表示服务器内部错误,我们同样可以通过 error.response.status
获取到这个信息,并据此采取适当的错误处理措施。