封装axios的好处:兼容多种请求方法,不需要关心是怎么调用的,只需要传入相关参数即可使用
我是在webpack项目里,用的到了ES6模块化进行封装
话不多说,上代码:
// 引入axios
import axios from "axios";
// axios.create方法会创建一个axios实例,可传入一些默认配置
const httpServer = axios.create();
// 请求拦截,请求发送之前会触发此方法
httpServer.interceptors.request.use(
(config) => {
// 这里可以做一些操作
config.method = config.method || "get"; // 区分请求方式
return config;
},
(error) => {
return Promise.reject(error); // 捕获错误
}
);
// 返回拦截,返回之前会触发此方法
httpServer.interceptors.response.use(
(response) => {
// 这里可以做一些操作
return response;
},
(error) => {
return Promise.reject(error);
}
);
// 定义请求方法
const fetchApi = (params) => {
// 返回一个Promise
return new Promise((resolve, reject) => {
httpServer(params)
.then((response) => {
resolve(response);
})
.catch((error) => {
// 这里可以加一些UI提示
reject(error);
});
});
};
export default fetchApi;
如何使用?
// 引入封装好的方法
import fetchApi from "./fetchApi.js";
// 传参
fetchApi({
methods: "get",
data: {
id: 1,
name: 2,
},
isLogin: true, //甚至可以有一些自定义的参数,在interceptors.request里通过config.XXX取到
}).then((res) => {
// 取到返回值
});
❤️ 转载文章请注明出处,谢谢!❤️