axios 是什么?
- Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。是目前前端最流行的 ajax 请求库。
- react/vue 官方都推荐使用 axios 发 ajax 请求
axios 特点
- 基于 promise 的异步 ajax 请求库,支持promise所有的API
- 浏览器端/node端都可以使用,浏览器中创建XMLHttpRequests,node.js创建http请求
- 拦截请求与响应(拦截器)
- 能够取消请求
- 批量发送多个请求(并发请求)
- 可以转换请求数据和响应数据,并对响应回来的内容自动转换成JSON类型的数据
- 客户端支持防御XSRF(安全性更高)
axios 常用请求方式
-
get
获取数据
-
post
提交数据(表单提交+文件上传)
-
put
更新数据(将所有数据均推放到服务端)
-
patch
更新数据(只将修改的数据推送到后端)
-
delete
删除数据
axios拦截器
- axios.interceptors.request 请求拦截器
- axios.interceptors.response 响应拦截器
请求拦截器可用于在发送请求前统一添加属性
响应拦截器在then()和catch()捕获之前
拦截器函数/ajax 请求/请求的回调函数的调用顺序
说明: 调用 axios()并不是立即发送 ajax 请求, 而是需要经历一个较长的流程
流程: 后定义的请求拦截器2 => 先定义的请求拦截器1 => 发ajax请求 => 先定义的响应拦截器1 => 后定义的响应拦截器 2 => 请求的回调
二次封装axios
作用
在某些数据请求中需要区分环境, 每个网络请求有相似需要处理的部分,如果直接使用axios,会导致代码冗余,破坏工程的可维护性,扩展性。
原理
使用axios对象的create方法创建一个axios实例,并进行配置(通用配置:基础路径,请求超时的时间等待);还有就是对于拦截器的封装。