axios
是一个基于promise的HTTP库,可以用在浏览器和node.js中
(1)axiosAPI
实例化
axios.create([config])
方法 axios与axios的实例都可调用
axios(config) axios.request(config)
axios.get(url[, config])
//参数:路径 配置对象 get带参方式带在params上
axios.get("http://47.106.244.1:8099/manager/user/findAllUser", {params: obj});
axios.delete(url[, config])
//参数:路径 配置对象(带参数{params:参数})
axios.delete("http://47.106.244.1:8099/manager/user/findAllUser", { params: obj});
axios.head(url[, config])
axios.options(url[, config])
axios.post(url[, data[, config]])
//参数:路径 传递的数据(json格式传递) 配置对象 post带参方式带在data上
axios.post("http://47.106.244.1:8099/manager/user/findAllUser", obj);
axios.put(url[, data[, config]])
axios.patch(url[, data[, config]])
处理并发请求方法
axios.all(iterable)
axios.spread(callback)
(2)配置参数
实例化axios对象需要传递的config与方法中的config都是一个对象,具有如下参数:
url 路径
method 请求方式
baseURL 基础路径
headers 设置请求头部
params get带参
data post带参
timeout
responseType
responseEncoding
withCredentials
paramsSerializer
transformRequest
transformResponse
axios({
// 配置对象
url: "http://47.106.244.1:8099/manager/user/findAllUser",
method: "get",
// get 带参 在params上
params: { id: 1 },
// post带参 在data上
data: { name: "zhangsan" },
// 设置请求头部 默认为json
headers: {}
})
(3)响应结构
与jquery中的ajax不同的是,axios会对返回结果进行封装,将其封装为如下结构:
{
data:{}, //完整的后台响应数据
status:200,//状态码
statusText: 'OK', //状态信息
headers:{}, //服务器头部信息
config:{}, //axios对request的配置
request:{} //request对象
}
(4) 配置默认值
可以指定将被用在各个请求的配置默认值
axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
(5)axios拦截器
请求拦截器
在请求发送在服务器之前进行拦截,用于在发送请求之前的最后配置。
axios.interceptors.request.use(
(config) => {
//在发送请求之前做些什么
return config;
},
(error) => {
// 请求错误做些什么
return Promise.reject(error);
}
);
响应拦截器
在请求发送到服务器之前进行拦截,用户对响应信息的过滤和封装
axios.interceptors.response.use(
(response) => {
// 对相应数据做些什么
return response; //返回响应数据
},
(error) => {
// 对响应错误做些设么
return Promise.reject(error);
}
);
(6)拦截器移除
移除请求拦截器 axios.interceptors.request.eject();
移除响应拦截器 axios.interceptors.response.eject();