当前位置:   article > 正文

【axios封装】面对多个baseurl 如何封装请求方法 多个服务器请求地址_vue axios中的process.env.vue_app_base_api,

vue axios中的process.env.vue_app_base_api,

一般情况下,我们在项目中全局设置了请求地址。

比如 vue 中,在.env.development文件中可以设置:

  1. # just a flag
  2. ENV = 'development'
  3. # base api
  4. VUE_APP_BASE_API = 'http://192.168.0.0:9999' // 服务地址

这样开发时,全局在axios中封装直接设置baseUrl也很方便,比如在 封装axios时候,可以这样:

  1. ...
  2. // 设置一下就可以了,注意这里是全局设置了服务地址
  3. axios.defaults.baseURL = process.env.VUE_APP_BASE_API
  4. ...

但是后台开发为了自己后台功能模块的区分(有时候可能就是为了自己方便,就是太懒),会提供很多地址,比如

  1. // 接口1
  2. http:192.168.0.1:9090/api/xxxxxx
  3. // 接口2
  4. http:192.168.0.5:8888/api/xxxxxx
  5. // 接口3
  6. http:192.168.0.1233:4444/api/xxxxxx

看到这一幕的话,作为前端开发真的奔溃了。沟通之后,后台各种理由说不能改正。没办法,这个坑,注定由前端来填。

【解决方案】

既然baseurl都不一样,那么索性在封装axios的时候,就不用设置baseurl了。

  1. ...
  2. // 设置一下就可以了,注意这里是全局设置了服务地址
  3. // 不设置baseurl
  4. // axios.defaults.baseURL = process.env.VUE_APP_BASE_API
  5. ...

然后新建一个文件,我这里叫作baseUrlConfig.js,用来管理所有可能出现的baseUrl地址。比如

  1. // baseURlConfig.js
  2. export baseUrls = {
  3. base1: 'http://192.168.1.1:1111',
  4. base2: 'http://192.168.2.1:2222',
  5. base3: 'http://192.168.3.1:3333',
  6. base4: 'http://192.168.4.1:4444',
  7. base5: 'http://192.168.5.1:5555',
  8. .....
  9. };

然后在具体的接口使用的时候,引入对应的baseurl即可,比如:

  1. // 比如是一个请求list的接口,用到的是一个 base2 这个服务地址
  2. // 引入封装好的axios
  3. import axios from '@request'
  4. // 引入baseUrlConfig
  5. import {baseUrl} from '@/request/baseUrlConfig';
  6. // 看看用哪一个baseUrl base2 这个服务地址
  7. const base2 = baseUrl.base2;
  8. // 开始接口封装了
  9. export const getList = params => {
  10. return axios.post(`${base2}/api/getList`)
  11. }

暂时这么处理吧。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/459203
推荐阅读
相关标签
  

闽ICP备14008679号