二次封裝axios,可執行個體化不同的請求配置
- 開發過程中,一個系統可能接入不同的背景服務,需要做不同的請求頭等相關配置,簡易再次封裝axios,可傳入不同參數進行執行個體化多個。
import axios from 'axios';
class HttpRequest {
constructor(options) {
this.defaults = {
timeout: 5000,
}
this.defaults = Object.assign(this.defaults, options);
}
interceptors(install) {
// 攔截請求,給請求的資料頭資訊做一些配置
install.interceptors.request.use(
config => {
return config;
},
err => {
return Promise.reject(err);
}
);
// 攔截響應,給響應的資料做處理
install.interceptors.response.use(
res => {
const { data, status } = res;
return data;
},
err => {
return Promise.reject(err);
}
);
}
request(options) {
options = Object.assign(this.defaults, options)
// 建立請求子執行個體
const instance = axios.create(options)
this.interceptors(instance);
return instance
}
}
//執行個體化請求類,并傳入不同配置參數
const request = new HttpRequest({
baseURL: '/api',
headers: {
authorization: localStorage.getItem('token')
}
});
// 調用請求方法
const http = request.request();
/**
* 請求接口
* @export
* @param {Object} params
* @returns
*/
export async function publish(params) {
return await http.post('/menu/publish', params);
}