axios 二次封装

128 阅读1分钟

一、拦截器

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;