ptool
Version:
vue项目开发通用工具类封装
132 lines (131 loc) • 3.91 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
/**
* @FileName api.request.ts
* @Author Mad Dragon <395548460@qq.com>
* @Version V 0.0.1
* @Date 2021/4/13 13:44
* @Title
* @Desc
**/
const axios_1 = __importDefault(require("./axios"));
const lStorage_1 = __importDefault(require("./lStorage"));
const getTokenToLocalStorage = (key = 'Authorization') => lStorage_1.default.getItem(key) || '';
class API {
constructor(baseUrl = '', option = {}) {
this.option = {};
this.baseUrl = baseUrl;
this.option = option;
this.axios = new axios_1.default(baseUrl, option);
}
/**
* post 请求
* @param url 接口url
* @param data 参数
* @param method
*/
post(url, data, config = {}, method = 'post') {
const options = Object.assign({ url,
// data: qs.stringify(data), from 标点传参
data,
method, headers: {
Authorization: getTokenToLocalStorage()
} }, config);
// @ts-ignore
if (window && window.md && window.md.headers) {
// @ts-ignore
window.md.headers.forEach((item) => {
options.headers[item.key] = item.value || getTokenToLocalStorage(item.key);
});
}
return this.axios.request(options);
}
/**
* put 请求
* @param url 接口url
* @param data 参数
*/
put(url, data, config = {}) {
return this.post(url, data, config, 'put');
}
/**
* patch 请求
* @param url 接口url
* @param data 参数
*/
patch(url, data, config = {}) {
return this.post(url, data, config, 'patch');
}
/**
* get 请求
* @param url 接口url
* @param params 参数
* @param method
*/
get(url, params, config = {}, method = 'get') {
const options = Object.assign({ url,
params,
method, headers: {
Authorization: getTokenToLocalStorage()
} }, config);
// @ts-ignore
if (window && window.md && window.md.headers) {
// @ts-ignore
window.md.headers.forEach((item) => {
options.headers[item.key] = item.value || getTokenToLocalStorage(item.key);
});
}
return this.axios.request(options);
}
/**
* delete 请求
* @param url 接口url
* @param params 参数
*/
delete(url, params, config = {}) {
return this.get(url, params, config, 'delete');
}
/**
* head 请求
* @param url 接口url
* @param params 参数
*/
head(url, params, config = {}) {
return this.get(url, params, config, 'head');
}
/**
* options 请求
* @param url 接口url
* @param params 参数
*/
options(url, params, config = {}) {
return this.get(url, params, config, 'options');
}
/**
* axios本版本不支持jsonp 自己拓展一个
* @param url
*/
jsonp(url) {
if (!url) {
console.error('Axios.JSONP 至少需要一个url参数!');
return;
}
return new Promise((resolve) => {
// @ts-ignore
window.jsonCallBack = (result) => {
resolve(result);
};
const JSONP = document.createElement('script');
JSONP.type = 'text/javascript';
JSONP.src = `${url}&callback=jsonCallBack`;
document.getElementsByTagName('head')[0].appendChild(JSONP);
setTimeout(() => {
document.getElementsByTagName('head')[0].removeChild(JSONP);
}, 500);
});
}
}
exports.default = API;