:::info 此项目axios的封装方式较为简单,与常见的封装方式没有太大的区别,值得一提的是增加了多axios实例的支持 :::
在一个较大的项目中,一套前端代码访问多套接口是很常见的事,最简单粗暴的做法就是封装多套axios,每一套axios对应一个baseURL,但这种方式无疑会产生重复代码,很不优雅,因此本项目对axios的封装进行了一点改造
// src/utils/http/index.jsimport axios from 'axios'import { setupInterceptor } from './interceptors'function createAxios(option = {}) {const defBaseURL = window.__APP__GLOB__CONF__?.VITE_APP_GLOB_BASE_API || import.meta.env.VITE_APP_GLOB_BASE_APIconst service = axios.create({timeout: option.timeout || 120000,baseURL: option.baseURL || defBaseURL,})setupInterceptor(service)return service}export const defAxios = createAxios()export const testAxios = createAxios({baseURL: window.__APP__GLOB__CONF__?.VITE_APP_GLOB_BASE_API_TEST || import.meta.env.VITE_APP_GLOB_BASE_API_TEST,})
这样封装的话,想要多少个axios实例都可以直接修改文件添加方法,只需要传入对应的baseURL即可
