本文主要是介绍axios 多个baseURL配置、实现不同前缀代理到不同的服务器的几种方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言:
在开发中,有可能遇到每部分的功能的需要调用另一台服务器的地址。这个时候就需要设置不同的请求前缀首先代理到不同的服务器地址。
一、axios封装实例以及代理:(不是完整的封装实例,重点在于baseURL的区别)
文件路径:/CMDB/src/utils/request.js
import axios from 'axios';const defaultConfig = {timeout: 5 * 1000,baseURL:'/api' // 注意!! 这里是全局统一加上了 '/api' 前缀,也就是说所有接口都会加上'/api'前缀在,页面里面写接口的时候就不要加 '/api'了,否则会出现2个'/api',类似 '/api/api/user'这样的报错,切记!!
};const instance = axios.create(Object.assign({}, defaultConfig));instance.interceptors.request.use(function (config) {...return config;},function (error) {return Promise.reject(error);}
);
instance.interceptors.response.use(function (response) {...},function (error) {...return Promise.reject(error);}
);
export default instance;
代理的时候有两个前缀,根据前缀代理到不同的服务器 (我这里是vite的配置)
server: {host: '0.0.0.0',//tip: when change this, you may need to change src/config either.proxy: {'/api': {// http://192.168.31.53:5173/target: 'http://192.168.31.199:18777/',changeOrigin: true,rewrite: path => path.replace(/^\/api/, '')},'/app': {target: 'http://125.124.5.117:12877/',changeOrigin: true}}
}
二、第一种:请求的时候传入参数覆盖默认的baseUrl
import request from '@/src/utils/request.js'// 获取IP列表 (这个会默认用前缀 '/api')
export const getList = data => {return request({url: '/ipv6/list',method: 'post',data});
};// 获取IP列表 (手动加另一个前缀 '/app')
export const getList = data => {return request({url: '/ipNetin/list',baseURL: '/app', // 这个 baseURL 会覆盖实例中默认的 baseURLmethod: 'post',data});
};
三、第二种:新封装一个axios实例
文件路径:/CMDB/src/utils/preAppRequest.js
import axios from 'axios';const defaultConfig = {timeout: 5 * 1000,baseURL:'/app'
};const instance = axios.create(Object.assign({}, defaultConfig));instance.interceptors.request.use(function (config) {...return config;},function (error) {return Promise.reject(error);}
);
instance.interceptors.response.use(function (response) {...},function (error) {...return Promise.reject(error);}
);
export default instance;
需要请求到前缀 /api 的服务器的时候 就引入 request 实例
需要请求到前缀 /app 的服务器的时候 就引入 preAppRequest 实例 如:
import request from '@/src/utils/preAppRequest.js'// 获取待办列表
export const getList = data => {return request({url: '/app/vlanNetin/list',method: 'post',data});
};
这篇关于axios 多个baseURL配置、实现不同前缀代理到不同的服务器的几种方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!