/* * Copyright (c) 2020. bmy */ import axios, { AxiosInstance, AxiosError, AxiosRequestConfig } from "axios"; import { IndexUtils } from "@utils/index.utils"; /** * axios的封装 */ export class AxioDao { instance: AxiosInstance; public constructor() { this.instance = axios.create({ baseURL: IndexUtils.CheckAjaxUrl(), timeout: 10000, headers: { "Content-Type": "application/json" } }); this.ResponseInterceptor(); this.RequestInterceptor(); } public async get(params: AxiosRequestConfig): Promise { return await this.instance.get(params.url, { params: params.data, headers: Object.assign({ Authorization: localStorage.getItem("token") }, params.headers) }); } public async post(params: AxiosRequestConfig): Promise { return await this.instance.post(params.url, params.data, { headers: Object.assign({ Authorization: localStorage.getItem("token") }, params.headers) }) } /** * Put 请求 * 请求参数请参考接口:RequestParams * @param params */ public async put(params: AxiosRequestConfig): Promise { return await this.instance.put(params.url, params.data) } /** * delete 请求 * 请求参数请参考接口:RequestParams * @param params */ public async delete(params: AxiosRequestConfig): Promise { return await this.instance.delete(params.url, { params: params.data }) } /** * 响应拦截器 * @constructor */ public async ResponseInterceptor(): Promise { this.instance.interceptors.response.use( (response: any) => { return response.data.result; }, (error: AxiosError) => { console.log(` ❌ 请求错误 ❌ 1、基地址: ${error.config.baseURL} 2、短地址: ${error.config.url} 3、请求 方式: ${error.config.method} 4、请求 参数: ${JSON.stringify(error.config.params)} 5、请求 头 : ${JSON.stringify(error.config.headers)} ------------------------------------------------------------ 6、错误信息为: ${error.message} 7、错误代码为: ${error.stack} `); return Promise.reject(error) }) } /** * 添加请求拦截器 * @constructor */ public async RequestInterceptor(): Promise { this.instance.interceptors.request.use((config: any) => { return config }, function (error: AxiosError) { return Promise.reject(error) }) } } export default new AxioDao();