axios常用接口封裝

import axios from 'axios';
import qs from "qs";
import api from './url.js';
import { Message, Loading } from 'element-ui';
 
// 請求地址
var baseURL = api.baseURL;   //環(huán)境地址
var token = '12345679'; // 企業(yè)端token
 
let instance = axios.create({ // 初始化axios
    baseURL,
    headers: {
        "Content-Type": "application/x-www-form-urlencoded;charset=utf-8",
    },
    timeout: 20000, // request timeout,
});
 
let cancel, promiseArr = {};
instance.interceptors.request.use(function(config) { // 請求攔截
    // 為了防止重復(fù)請求ajax
    if (promiseArr[config.url]) {
        promiseArr[config.url] = cancel
    } else {
        promiseArr[config.url] = cancel
    }
    config.headers['token'] = token; // 設(shè)置token
    return config;
}, function(error) {
    Message({message: '請求攔截錯誤:' + error, type: 'error'});
    return Promise.reject(error);
});
 
instance.interceptors.response.use(function(response) { // 響應(yīng)攔截
    return response;
}, function(error) {
    Message({message: '響應(yīng)攔截錯誤:' + error, type: 'error'});
    return Promise.reject(error);
});
 
 
function correct (resolve, res) { // 正常返回
    if (res.data.code == 0) {
        resolve(res.data);
    } else { // 錯誤返回
        Message({message: '請求錯誤:' + res.data.msg, type: 'error'});
    }
}
 
function error (reject, err) { // 錯誤返回
    Message({message: '請求錯誤:' + err, type: 'error'});
    reject(err);
}
 
export default {
    post: (url, params = {}, qr = true, json = false) => { // post 請求
        let loadingInstance = Loading.service({ fullscreen: true });
        params = qr ? qs.stringify(params) : params; // 序列化的參數(shù)
        json && (instance.defaults.headers['Content-Type'] = 'application/json'); // json格式的參數(shù)
        return new Promise((resolve, reject) => {
            instance.post(api[url], (params))
            .then(res => {
                correct(resolve, res);
                loadingInstance.close();
            })
            .catch(err => {
                error(reject, err);
            });
        });
    },
     
    get: (url, params = {}) => { // get 請求
        return new Promise((resolve, reject) => {
            let loadingInstance = Loading.service({ fullscreen: true });
            instance.get(api[url], { params })
            .then(res => {
                correct(resolve, res);
                loadingInstance.close();
            })
            .catch(err => {
                error(reject, err);
            });
        });
    },
     
    file: (url, params) => { // formdata 表單上傳
        return new Promise((resolve, reject) => {
            instance.defaults.headers['Content-Type'] = 'multipart/form-data';
            instance.post(api[url], (params))
            .then(res => {
                correct(resolve, res);
            })
            .catch(err => {
                error(reject, err);
            });
        });
    },
 
    url: (url) => { // 返回url
        return url ? baseURL + api[url] : baseURL
    },
 
    token: (data) => { // 切換token
        focuser = token;
        token = data;
    }
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容