可以查看axios的中文文档,地址如下
https://www.axios-http.cn/
为什么要对axios进行二次封装:
由于自带的axios不能满足我们的需求,需要对其进行二次封装,方便程序员使用
// 引入axios
import axios from 'axios'
// @ts-ignore
import { ElMessage } from "element-plus";
import (GET_TOKEN) from './token.ts'
// 第一步:利用axios对象的create方法,去创建axios实例(其他的配置:基础路径、超时时间)
const requeset = axios.create({
// 基础路径
baseURL: import.meta.env.VITE_APP_BASE_API,//后期可以换成自己的项目地址
// 设置超时时间
timeout: 5000,
})
// // 第二步:给request实例添加请求拦截器
requeset.interceptors.request.use((config)=>{
//获取token
const token = GET_TOKEN()
if(token){
config.header.token = token
}
// 返回配置对象
return config;
})
// 第三步:给request实例添加响应拦截器
requeset.interceptors.response.use((response)=>{
// 成功的回调
// 简化数据
return response.data
},
(error)=>{
// 失败的回调:处理http网络错误
// 定义一个变量,存储网络错误信息
let message = '';
// http状态码
let status = error.response.status
switch(status){
case 401:
message = 'TOKEN过期';
break;
case 403:
message = '无权访问';
break;
case 404:
message = '请求地址错误';
break;
case 500:
message = '服务器出现问题';
break;
default:
message = '网络出现错误';
break;
}
// 提示错误信息
ElMessage({
type:'error',
message
})
return Promise.reject(error);
}
)
// 对外暴露
export default requeset;