一、拦截器
1. 请求拦截器
axios 请求拦截器:在发起请求前可以处理一些逻辑
- 可以添加公共请求头
- 可以数据加密
- 可以设置 baseURL
- 可以设置跨域请求是否使用凭证
- 可以设置请求超时时间
// 添加请求拦截器
axios.interceptors.request.use(
function (config) {
// 在发送请求之前做些什么
return config
},
function (error) {
// 对请求错误做些什么
return Promise.reject(error)
}
)
2. 响应拦截器
axios 响应拦截器:当服务器数据返回后,可以处理一些逻辑
- 可以对响应数据进行格式转化
- 可以对响应状态码进行统一处理
- 可以对响应数据进行解密
// 添加响应拦截器
axios.interceptors.response.use(
function (response) {
// 对响应数据做点什么
return response
},
function (error) {
// 对响应错误做点什么
return Promise.reject(error)
}
)
二、axios 二次封装
//对于axios进行二次封装
import axios from "axios";
//1.利用axios对象的方法create创建一个axios实例
//2.request就是axios,只不过是稍微配置了一下
const requests = axios.create({
//配置对象
//请求接口都是有'/api'---/api/user/info--->相当于默认添加/api,请求时只需输/user/info
baseURL: "/api",
//代表请求超时的时间为5s
timeout: 5000,
})
//请求拦截器,在发请求之前,请求拦截器可以检测到,可以在请求发出去前做相应处理
requests.interceptors.request.use((config)=>{
//config:配置对象,对象里有一个属性很重要,headers请求头
return config;
})
//响应拦截器
requests.interceptors.response.use((res)=>{
//成功回调,服务器响应数据回来后,响应拦截器可以检测到,且可以做相应的逻辑处理
return res.data;
},(error)=>{
//服务器响应失败
return Promise.reject(new Error('faile'))
})
//对外暴露
export default requests;