当前位置:   article > 正文

axios 多个baseURL配置、实现不同前缀代理到不同的服务器的几种方式_axios配置多个baseurl请求

axios配置多个baseurl请求
前言:

在开发中,有可能遇到每部分的功能的需要调用另一台服务器的地址。这个时候就需要设置不同的请求前缀首先代理到不同的服务器地址。

一、axios封装实例以及代理:(不是完整的封装实例,重点在于baseURL的区别)

文件路径:/CMDB/src/utils/request.js

  1. import axios from 'axios';
  2. const defaultConfig = {
  3. timeout: 5 * 1000,
  4. baseURL:'/api' // 注意!! 这里是全局统一加上了 '/api' 前缀,也就是说所有接口都会加上'/api'前缀在,页面里面写接口的时候就不要加 '/api'了,否则会出现2个'/api',类似 '/api/api/user'这样的报错,切记!!
  5. };
  6. const instance = axios.create(Object.assign({}, defaultConfig));
  7. instance.interceptors.request.use(
  8. function (config) {
  9. ...
  10. return config;
  11. },
  12. function (error) {
  13. return Promise.reject(error);
  14. }
  15. );
  16. instance.interceptors.response.use(
  17. function (response) {
  18. ...
  19. },
  20. function (error) {
  21. ...
  22. return Promise.reject(error);
  23. }
  24. );
  25. export default instance;

代理的时候有两个前缀,根据前缀代理到不同的服务器 (我这里是vite的配置)

  1. server: {
  2. host: '0.0.0.0',
  3. //tip: when change this, you may need to change src/config either.
  4. proxy: {
  5. '/api': {
  6. // http://192.168.31.53:5173/
  7. target: 'http://192.168.31.199:18777/',
  8. changeOrigin: true,
  9. rewrite: path => path.replace(/^\/api/, '')
  10. },
  11. '/app': {
  12. target: 'http://125.124.5.117:12877/',
  13. changeOrigin: true
  14. }
  15. }
  16. }
二、第一种:请求的时候传入参数覆盖默认的baseUrl
  1. import request from '@/src/utils/request.js'
  2. // 获取IP列表 (这个会默认用前缀 '/api')
  3. export const getList = data => {
  4. return request({
  5. url: '/ipv6/list',
  6. method: 'post',
  7. data
  8. });
  9. };
  10. // 获取IP列表 (手动加另一个前缀 '/app')
  11. export const getList = data => {
  12. return request({
  13. url: '/ipNetin/list',
  14. baseURL: '/app', // 这个 baseURL 会覆盖实例中默认的 baseURL
  15. method: 'post',
  16. data
  17. });
  18. };

三、第二种:新封装一个axios实例

文件路径:/CMDB/src/utils/preAppRequest.js

  1. import axios from 'axios';
  2. const defaultConfig = {
  3. timeout: 5 * 1000,
  4. baseURL:'/app'
  5. };
  6. const instance = axios.create(Object.assign({}, defaultConfig));
  7. instance.interceptors.request.use(
  8. function (config) {
  9. ...
  10. return config;
  11. },
  12. function (error) {
  13. return Promise.reject(error);
  14. }
  15. );
  16. instance.interceptors.response.use(
  17. function (response) {
  18. ...
  19. },
  20. function (error) {
  21. ...
  22. return Promise.reject(error);
  23. }
  24. );
  25. export default instance;

需要请求到前缀 /api 的服务器的时候 就引入 request 实例

需要请求到前缀 /app 的服务器的时候 就引入 preAppRequest 实例 如:

  1. import request from '@/src/utils/preAppRequest.js'
  2. // 获取待办列表
  3. export const getList = data => {
  4. return request({
  5. url: '/app/vlanNetin/list',
  6. method: 'post',
  7. data
  8. });
  9. };

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

闽ICP备14008679号