- 通过不同的需求,对拦截器内容进行模块化,让每个模块只对应一个功能。
通用挂载方法
const defaultConfig = {
Resolve: (data) => data,
Reject: (error) => Promise.reject(error),
};
const mounted = (instanceType, interceptor) => {
const { Resolve, Reject } = {
...default,
...interceptor,
};
return instanceType.use(Resolve, Reject);
};
export const interceptorsRequest = (instance, interceptor) {
return mounted(instance.interceptors.request, interceptor);
}
export const interceptorsResponse = (instance, interceptor) {
return mounted(instance.interceptors.response, interceptor);
}
拦截器1内容逻辑处理
import { interceptorsRequest, interceptorsResponse } from './install.js';
const Resolve = (config) => {
return config;
}
const Reject = (config) => {
return config;
}
export default {
install: (instance) => interceptorsRequest(instance, { Resolve, Reject }),
}
使用
import axios from 'axios';
import interceptorsOne from './interceptors-one.js';
import interceptorsTwo from './interceptors-two.js';
const defaultConfig = {
timeOut: 5000,
baseUrl: '127.0.0.1/api/',
}
const requestType = axios.create({
...defaultConfig,
header: { 'Content-Type': 'application/json' };
});
const allInterceptors = [interceptorsOne, interceptorsTwo];
allInterceptors.forEach((item) => {
item.install(requestType)
})
export { requestType };