1.axios是什么?
Axios是一个基于Promise(ES6中用于处理异步的)的HTTP库,用于浏览器和node.js中,API。
2.axios的特点
1)从浏览器中创建 XMLHttpRequest
2)支持 Promise API
3)客户端支持防止CSRF
4)提供了一些并发请求的接口(重要,方便了很多的操作)
5)从 node.js 创建 http 请求
6)拦截请求和响应
7)转换请求和响应数据
8)取消请求
9)自动转换JSON数据
2)支持 Promise API
3)客户端支持防止CSRF
4)提供了一些并发请求的接口(重要,方便了很多的操作)
5)从 node.js 创建 http 请求
6)拦截请求和响应
7)转换请求和响应数据
8)取消请求
9)自动转换JSON数据
3.axios的安装
npm安装:npm i axios
bower安装:bower i axios
cdn安装:<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
4.常用api说明
执行一个GET请求
const axios = require('axios');
// 向具有给定ID的用户发出请求
axios.get('/user?ID=12345')
.then(function (response) {
// 响应 success
console.log(response);
})
.catch(function (error) {
// 响应 error
console.log(error);
})
.then(function () {
// always executed
});
// 上面的请求也可以通过下面params传递参数的方式实现
axios.get('/user', {
params: {
ID: 12345
}
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
})
.then(function () {
// always executed
});
执行一个post请求
axios.post('/user', {
firstName: 'Fred',
lastName: 'Flintstone'
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
执行多个并发请求
function getUserAccount() {
return axios.get('/user/12345'); //请求1
}
function getUserPermissions() {
return axios.get('/user/12345/permissions'); //请求2
}
axios.all([getUserAccount(), getUserPermissions()]) //两个请求放到数组中传递给all()
.then(axios.spread(function (acct, perms) { //多个请求都发送完毕,拿到返回的数据
// 两个请求现在都执行完成
}));
axios中的all()
方法,传入一个数组,数组元素即为函数调用,函数中即为请求调用。
然后,then()
回调方法中调用axios自己的spread()
方法。
通用请求axios(config)
,通过向 axios 传递相关配置config对象来创建请求
axios({
methods: 'post',
url: 'http://jsonplaceholder.typicode.com/users',
data: {
name: 'qiurx'
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
})
5.创建实例
可以使用自定义配置新建一个 axios 实例axios.create([config])
//create创建一个新的实例对象
var instance = axios.create({
url: 'http://jsonplaceholder.typicode.com/users',
imeout: 3000,
method: 'post'
});
//即可调用方法,和axios实例同
instance.get('http://jsonplaceholder.typicode.com/users').then(Response=>{
console.log(Response);
});
6.拦截器
在请求或响应被 then 或 catch 处理前拦截它们。
// 添加请求拦截器
axios.interceptors.request.use(function (config) {
// Do something before request is sent
return config;
}, function (error) {
// Do something with request error
return Promise.reject(error);
});
// 添加响应拦截器
axios.interceptors.response.use(function (response) {
// Do something with response data
return response;
}, function (error) {
// Do something with response error
return Promise.reject(error);
});
也可以将拦截器添加到axios的自定义实例。
const instance = axios.create();
instance.interceptors.request.use(function () {/*...*/});