// 通用的处理办法,和机器的处理办法写在这里 // 基于 axios 封装的请求方法 import type { AxiosInstance, AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from 'axios' import axios from 'axios' export class Request { // axios 实例 instance: AxiosInstance // 基础配置,url和超时时间 baseConfig: AxiosRequestConfig = { baseURL: '', timeout: 60000 } constructor(config: AxiosRequestConfig) { // 创建实例 this.instance = axios.create(Object.assign(this.baseConfig, config)) // 发送拦截器 this.instance.interceptors.request.use( (config: InternalAxiosRequestConfig) => { return config }, (err: any) => { // 请求错误,这里可以用全局提示框进行提示 return Promise.reject(err) } ) // 接收拦截器 this.instance.interceptors.response.use( (res: AxiosResponse) => { // 直接返回res,当然你也可以只返回res.data // 系统如果有自定义code也可以在这里处理 return res.data }, (err: any) => { // 这里用来处理http常见错误,进行全局提示 // 这里是AxiosError类型,所以一般我们只reject我们需要的响应即可 return Promise.reject(err) } ) } // 定义请求方法 public request(config: AxiosRequestConfig): Promise { return this.instance.request(config) } // get方法,执行自定义的post public get(url: string, config?: AxiosRequestConfig): Promise { return this.instance.get(url, config) } // post方法,执行自定义的post public post({ url, data, config }: { url: string data?: any config?: AxiosRequestConfig }): Promise { return this.instance.post(url, data, config) } } export default new Request({})