这里是前端程序员小张!
人海茫茫,感谢这一秒你看到这里。希望我的文章对你的有所帮助!
愿你在未来的日子,保持热爱,奔赴山海!
Axios是一个基于promise网络请求库,作用于node.js和浏览器
。它是 [isomorphic]
的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http
模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。
特性
安装
使用npm: npm install axios
axios
传递相关配置来创建请求 —axios(config)
// 发起一个post请求
axios({
method: 'post',
url: '/user/12345',
data: {
name: 'zhang',
password: 12346
}
});
// 发起一个 GET 请求 (默认请求方式)
axios('/user/12345');
支持多种请求方式:
axios(config)
axios.request(config)
axios(config)
axios.get(url[, config])
axios.delete(url[, config])
axios.head(url[, config])
axios.post(url[, data[, config]])
axios.put(url[, data[, config]])
axios.patch(url[, data[, config]])
url
是必需的。如果没有指定 method
,请求将默认使用 GET
方法。
请求的服务器 URL
url:'/user'
创建请求时使用的方法
method:'get'
请根数据
baseURL:''
请求前的数据处理
transformRequset:[function(data{})]
请求后的数据处理
transformResponse:[function(data){}]
自定义的请求头
headers:{'x-Requseted-With':'XMLHttpRequest'}
URL查询对象
params
是与请求一起发送的 URL 参数params:{}
查询对象序列化函数
paramsSerializer:function(params){}
request body
data:{}
超时设置
timeout
的值,则请求会被中断timeout:10000
为什么要创建Axios实例?
axios.create([config])
// 使用自定义配置新建一个实例
const instance = axios.create({
baseURL:' ',
timeout:1000,
headers: {}
})
您可以指定默认配置,它将作用于每个请求。
全局 axios 默认值
axios.defaults.baseURL = ' ';
自定义实例默认值
// 创建实例时配置默认值
const instance = axios.create({
baseURL: ' '
});
// 创建实例后修改默认值
instance.defaults.timeout = 1000
拦截器是指当发送请求或者得到响应被then或catch处理之前对它们进行拦截,拦截后可对数据做一些处理
- 比如给请求数据添加头部信息;
- 对响应数据进行序列化,然后再传给浏览器;
- 这些都可以在拦截器中进行
// 对实例配置拦截器
// 添加一个请求拦截器
axios.interceptors.request.use((config) => {
// 在发送请求之前做一些事
// 1.开始loading的动画
// 2.对原来的配置进行一些修改
// 2.1 header
// 2.2 认证登录:token/cookie
// 2.3 请求参数进行某些转化
console.log("请求成功的拦截");
return config
}, (err) => {
//对请求错误时做一些事
console.log("请求失败的拦截");
return err
});
// 添加一个响应拦截器
axios.interceptors.response.use((response) => {
//对返回的数据做一些处理
// 1.结束loading的动画
// 2.对数据进行转化,再返回数据
return response
}, (err) => {
//对返回的错误做一些处理
return err
})