Axios 错误模型
Axios 如何区分响应错误、请求错误和配置错误,以及 validateStatus 的作用。
#type / concept
#status / growing
#tech / network
#platform / browser
#resource / http
#resource / javascript
#package / axios
[!info] related notes
- 所属 MOC: HTTP 与前端网络请求
- 上位概念: Axios
- 前置概念: Axios 请求配置
- 并列概念: Axios 拦截器, Axios 响应结构
- 相关实践: 前端HTTP状态码的处理
Axios 错误模型
一句话定义
Axios 的错误大致分成三类:服务器返回了响应、请求发出但没有响应、请求在配置阶段就失败。
核心内容
1. error.response
说明请求已经发出,服务器也返回了响应,但状态码不在你认为的成功范围内。
2. error.request
说明请求发出去了,但没收到响应。常见于网络、跨域、服务端无响应。
3. 初始化/配置错误
说明错误发生在请求真正发出之前,比如参数拼错、拦截器抛错、序列化失败。
validateStatus
它可以重写“哪些 HTTP 状态码算成功”。这会直接影响哪些响应进入 then,哪些进入 catch。
toJSON()
错误对象可以转成更适合日志/上报的结构。
边界与易混淆点
- 4xx/5xx 是否算失败,不只看 HTTP 本身,还看
validateStatus - Axios 默认会把非 2xx 当成错误
response和request不会同时都没有逻辑意义
最短记忆方式
- 有
response:服务端回了 - 有
request:请求发了但没回 - 都没有:请求配置阶段就挂了