为什么要使用 axios,相比于 fetch 有什么优势
axios
和 fetch
都是在现代浏览器中进行 HTTP 请求的流行工具。虽然它们都能实现相似的功能,但它们在特性和使用方法上有所不同。以下是使用 axios
相较于 fetch
的一些优势:
- 错误处理 :
axios
在默认情况下会认为所有 2xx 的状态码是成功的,而非 2xx 的状态码是错误的。在fetch
中,你需要手动检查response.ok
来确定请求是否成功。如果请求返回了一个 404 或 500 状态码,fetch
不会自动地标记它为错误。 - 超时设置 :与
fetch
不同,axios
允许你设置请求超时,这在你希望请求在一定时间内完成时非常有用。 - 自动转换 JSON :当你使用
axios
进行请求时,如果返回的数据是 JSON 格式,它会自动为你进行转换。而在fetch
中,你需要调用response.json()
方法来手动转换。 - 请求和响应拦截器 :
axios
允许你在请求发送前或响应被then
或catch
处理之前拦截它们,这使得你可以更容易地实现像添加请求头、日志记录等功能。 - 请求取消 :
axios
提供了一个取消请求的方法,这在某些场景中,如用户在请求完成之前导航离开页面时,可以非常有用。 - 浏览器和 Node.js :
axios
既可以在浏览器中使用,也可以在 Node.js 中使用,这使得它更为通用。 - 更丰富的配置选项 :
axios
提供了一些fetch
没有的配置选项,如在请求中设置代理。 - 防御 XSRF :在浏览器环境中,如果网站满足一定的条件,
axios
会自动包含一个从 cookie 中获取的 XSRF token,从而增加安全性。
然而,选择 axios
还是 fetch
也取决于项目的需求和开发者的偏好。有些开发者可能更喜欢 fetch
的原生性质和简洁性,特别是在不需要 axios
的额外功能时。