import axios from 'axios';
import qs from "qs";
import api from './url.js';
import { Message, Loading } from 'element-ui';
// 请求地址
var baseURL = api.baseURL; //环境地址
var token = '12345679'; // 企业端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) { // 请求拦截
// 为了防止重复请求ajax
if (promiseArr[config.url]) {
promiseArr[config.url] = cancel
} else {
promiseArr[config.url] = cancel
}
config.headers['token'] = token; // 设置token
return config;
}, function(error) {
Message({message: '请求拦截错误:' + error, type: 'error'});
return Promise.reject(error);
});
instance.interceptors.response.use(function(response) { // 响应拦截
return response;
}, function(error) {
Message({message: '响应拦截错误:' + 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; // 序列化的参数
json && (instance.defaults.headers['Content-Type'] = 'application/json'); // json格式的参数
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常用接口封装
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。