axios 配置多个 url 是怎么实现的前端大佬看过来。

2021-03-24 10:25:17 +08:00
 cwz346852114

创建多个 axios 实例肯定是最愚蠢的解决方案 。 大佬们是怎么解决这个问题的

3287 次点击
所在节点    问与答
32 条回复
learningman
2021-03-24 10:27:15 +08:00
RTFM
66beta
2021-03-24 10:28:47 +08:00
看标题不知道你想要啥,多机房随机一个发送请求?
cwz346852114
2021-03-24 10:33:17 +08:00
@66beta 动态配置 url 但是只创建一个 axios 实例
akaxiaok339
2021-03-24 10:35:39 +08:00
baseURL 和 URL 还不够用吗
qiayue
2021-03-24 10:35:43 +08:00
建议把你最原始需求说出来,现在你说的是你为了解决最原始需求想到的一个解决方案,但很可能这不是最优方案
cwz346852114
2021-03-24 10:37:43 +08:00
@qiayue 后端之前一个项目拆成两个项目了 然后域名不一致 如果创建多个 axios 实例是能解决这个问题 拓展开来这个方案就有点问题 如果项目扩充请求多个 url 不可能一个 url 配置一个 axios 实例,所以 如果一个 axios 能解决 n 个域名的问题
cwz346852114
2021-03-24 10:37:57 +08:00
@akaxiaok339 不够用
zhlssg
2021-03-24 10:38:54 +08:00
如果是多个 baseUrl 的话,多实例,在后再原型对象上做拦截器处理就好了
不想多实例,那么就不要配置 baseUrl 属性,在每个请求里添加一个额外标识,然后用 transform,或者拦截器里,拿到标识后在各自添加前缀路径
66beta
2021-03-24 10:42:18 +08:00
axios 实例一般都是一个,你调用的时候给的 url 不一样,跟后端有几个域名无关
H15018327040
2021-03-24 10:43:07 +08:00
如何判断这个请求是要发往那个服务器的呢?
treblex
2021-03-24 10:44:06 +08:00
2 个实例没什么不好的,拦截器有通用的复用一下就行了
yeqizhang
2021-03-24 10:44:17 +08:00
我看我这边前端只用了一个, baseurl 然后拼接后端给的不一样的代理路径的..... 你搞几个不一样的 baseurl 来拼接不行吗? 难不成是想解决跨域?
cwz346852114
2021-03-24 10:58:00 +08:00
@yeqizhang 是这样的 url 是前面的域名路径 比如我服务端 n 个项目部署在 n 个域名上 那么要请求 n 个域名
cwz346852114
2021-03-24 10:58:52 +08:00
@treblex 2 个实例是没问题 但是多了呢?
jiangshanmeta
2021-03-24 11:00:54 +08:00
后端两个服务 请求路径给不同前缀 /service1/api /service2/api 这样 然后请求就请求本域 召唤运维配转发 顺便还能解决跨域
overflow99
2021-03-24 11:01:15 +08:00
不使用 baseURL 封装,每次调用都传入新的 url
Shook
2021-03-24 11:01:35 +08:00
1. 合并请求参数
2. 拦截器处理
3. proxy 处理
H15018327040
2021-03-24 11:02:31 +08:00
let baseUrl="http://192.168.1.89:8080"
export default {
login(param) {
return axiosInstance.post("/login",param,{
baseUrl:baseUrl
})
}
}

同一个域名的请求写在同一个 js 里面。
cwz346852114
2021-03-24 11:04:26 +08:00
@H15018327040 这个是一个解决方案
cwz346852114
2021-03-24 11:04:48 +08:00
@jiangshanmeta 小公司没运维

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/764524

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX