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;
}
};
axios常用接口封裝
最后編輯于 :
?著作權(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ù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。