import type { AxiosRequestConfig, AxiosInstance, AxiosResponse, AxiosError } from 'axios' import axios from 'axios' import qs from 'qs' export class RequestAxios { private axiosInstance: AxiosInstance private readonly options constructor(options) { this.options = options this.axiosInstance = axios.create(options) this.setupInterceptors() } // 拦截器 setupInterceptors() { this.axiosInstance.interceptors.request.use((config: AxiosRequestConfig) => { // ... }) this.axiosInstance.interceptors.response.use((res) => res, err => { // ... }) } // GET get(config: AxiosRequestConfig): Promise { return this.request({ ...config, method: 'GET' }) } // POST post(config: AxiosRequestConfig): Promise { return this.request({ ...config, method: 'POST' }) } // PUT put(config: AxiosRequestConfig): Promise { return this.request({ ...config, method: 'PUT' }) } // DELETE delete(config: AxiosRequestConfig): Promise { return this.request({ ...config, method: 'DELETE' }) } // 请求 request(config: AxiosRequestConfig): Promise { let conf = config conf = this.urlFordata(conf) return new Promise((resolve, reject) => { this.axiosInstance .request(conf) .then((res: AxiosResponse) => { if (!res) { console.log('请求错误') } resolve(res) }) .catch((err: AxiosError) => { console.log(err) reject(err) }) }) } // post urlFordata(config: AxiosRequestConfig) { if (config.method?.toUpperCase() == 'GET') { return config } return { ...config, data: qs.stringify(config.data), } } } // 创建实例 function Vaxios(baseurl) { return new RequestAxios({ timeout: 2 * 1000, baseURL: baseurl, headers: { 'Content-Type': 'application/json;charset=UTF-8' }, requestOptions: {}, }) } // 设置baseurl export const devApi = Vaxios('http://127.0.0.1:xxx/xxxx');