Axios 状态码处理范围
· 阅读需 2 分钟
状态码范围 | Axios 行为 |
---|---|
200 - 299 | 触发 .then() 方法 |
小于 200 | 触发 .catch() 方法 |
300 - 399 | 根据具体情况(如重定向)处理 |
400 - 499 | 触发 .catch() 方法 |
500 及以上 | 触发 .catch() 方法 |
获取重定向信息
axios.get('/url', {
maxRedirects: 0 // 不自动重定向
}).then(response => {
console.log('响应状态码:', response.status); // 例如 302
console.log('重定向到:', response.headers.location); // 重定向目标 URL
}).catch(error => {
console.log('处理错误', error);
});
修改 validateStatus 函数
通过修改 validateStatus
函数,你可以定义哪些 HTTP 状态码应该解析为成功响应
axios.get('/api', {
validateStatus: function (status) {
return true; // 所有响应都视为成功,都会传递给.then()
}
})
.then(response => {
console.log('任何状态码都在这里处理:', response.status);
})
.catch(error => {
console.log('处理错误', error);
});
建议
前端开发中,通常会对 Axios 进行封装以便更高效地处理业务逻辑。一种常见做法是与前端团队约定一套自定义状态码,通过这些状态码来控制不同的逻辑流程。在这种设计中,服务端不管请求的实际结果如何,总是返回 HTTP 状态码 200
。随后,通过响应体中的自定义 code
来判断具体的业务状态,并据此进行相应的处理。这种方法简化了响应的判断逻辑,使得前端开发者可以更直接地使用 Axios 来实现业务需求,同时也降低了处理网络或服务器错误的复杂性。