:::info 此项目axios的封装方式较为简单,与常见的封装方式没有太大的区别,值得一提的是增加了多axios实例的支持 :::

    在一个较大的项目中,一套前端代码访问多套接口是很常见的事,最简单粗暴的做法就是封装多套axios,每一套axios对应一个baseURL,但这种方式无疑会产生重复代码,很不优雅,因此本项目对axios的封装进行了一点改造

    1. // src/utils/http/index.js
    2. import axios from 'axios'
    3. import { setupInterceptor } from './interceptors'
    4. function createAxios(option = {}) {
    5. const defBaseURL = window.__APP__GLOB__CONF__?.VITE_APP_GLOB_BASE_API || import.meta.env.VITE_APP_GLOB_BASE_API
    6. const service = axios.create({
    7. timeout: option.timeout || 120000,
    8. baseURL: option.baseURL || defBaseURL,
    9. })
    10. setupInterceptor(service)
    11. return service
    12. }
    13. export const defAxios = createAxios()
    14. export const testAxios = createAxios({
    15. baseURL: window.__APP__GLOB__CONF__?.VITE_APP_GLOB_BASE_API_TEST || import.meta.env.VITE_APP_GLOB_BASE_API_TEST,
    16. })

    这样封装的话,想要多少个axios实例都可以直接修改文件添加方法,只需要传入对应的baseURL即可