天天看點

二次封裝axios,可執行個體化不同的請求配置二次封裝axios,可執行個體化不同的請求配置

二次封裝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);
}
           

繼續閱讀