@egova/components
Version:
components
83 lines (77 loc) • 2.29 kB
text/typescript
import { commonSetting } from "../settings";
import axios, { AxiosRequestConfig } from "axios";
import Cookies from "js-cookie";
// Axios请求拦截器
axios.interceptors.request.use(
(config: AxiosRequestConfig) => {
let token = Cookies.get("access_token");
if (
token &&
config.url &&
~config.url.search(/unity|security\/role|security\/user/g)
) {
// 判断是否存在token,如果存在的话,则每个http header都加上token
config.headers.Authorization = "Bearer " + token;
}
return config;
},
error => {
console.error(error);
return Promise.reject(error);
}
);
/**
* 业务服务基类。
* @abstract
* @class
* @version 1.0.0
*/
export default abstract class ServiceBase {
public authingServer = commonSetting.authingServer;
protected url(url: string): string {
return (
commonSetting.baseUrl.replace(/\/$/, "") +
"/" +
url.replace(/^\//, "")
);
}
/**
* 把json对象转换成formData数据
* @param data json对象
*/
protected toFormData(data: any): FormData {
let fromData = new FormData();
if (data) {
Object.keys(data).forEach(key => {
// 忽略以“_”的参数
if (key.indexOf("_") !== 0) {
fromData.append(key, data[key]);
}
});
}
return fromData;
}
/**
* 发送post请求
* @param url 请求地址
* @param data 发送的参数
*/
protected _post<T>(url: string, data?: any): Promise<T> {
return axios.post(this.url(url), data).then(res => res.data);
}
/**
* 发送get请求
* @param url 请求地址
*/
protected _get<T>(url: string): Promise<T> {
return axios.get(this.url(url)).then(res => res.data);
}
/**
* 发送put请求
* @param url 请求地址
* @param data 请求参数
*/
protected _put<T>(url: string, data?: any): Promise<T> {
return axios.put(this.url(url), data).then(res => res.data);
}
}