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

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

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

3302 次点击
所在节点    问与答
32 条回复
cwz346852114
2021-03-24 11:06:02 +08:00
@H15018327040 如果 url 多了 那你这个 js 文件也挺多的
cwz346852114
2021-03-24 11:07:26 +08:00
@Shook proxy 代理服务端无法使用
GzhiYi
2021-03-24 11:16:17 +08:00
一个实例可以扩展多个不同的请求方法
const ins = axios.create({})
const requestOne = (url, params, config = {}) => {
return ins({
url: `${domain1}/url`
})
}
const requestTwo = (url, params, config = {}) => {
return ins({
url: `${domain2}/url`
})
}
treblex
2021-03-24 11:16:36 +08:00
woodie1994
2021-03-24 11:17:14 +08:00
baseUrl 可以覆盖的,像这样 return request({
url: 'x'x'x',
method: 'post',
data,
baseURL: 'https://xxx'
})
codder
2021-03-24 11:23:24 +08:00
你将 axios 封装成一个类,不同的接口就生成不同的实例并传入对应的 baseURl 就好了啊!
H15018327040
2021-03-24 11:27:53 +08:00
@cwz346852114 也可以组成一个文件,只是一个域名一个文件好做管理,这种多域名也不至于多到十几个吧,如果真有十几个,就得考虑业务是不是有问题了。
cwz346852114
2021-03-24 11:32:00 +08:00
@H15018327040 前端做统一路径 后端做接口分发这个方案比较好一点吧
H15018327040
2021-03-24 11:35:32 +08:00
前端:这个需求前端不好做,后端好做,

后端:这个需求后端不好做,前端好做,/狗头
Shook
2021-03-24 11:36:30 +08:00
// types.js
export const types = {
--baidu: 'https://www.baidu.com/',
--google: 'https://www.google.com/',
};

// solution 1:
import axios from 'axios';
import { types } from './types';
const useTypedHttp = (type, options) => axios.request({
--baseURL: types[type] ?? type,
--...options,
});

// solution 2:
import axios from 'axios';
import { types } from './types';
axios.interceptors.request.use(config => {
--const options = { { /* default option properties */ }, ...config.options };
--if (options.type && types[options.type]) {
----config.baseURL = types[options.type];
--}
--return config;
});

还可以自己写替换前缀啥的,方法好多的。
Vegetable
2021-03-24 11:40:18 +08:00
创建多个实例,对小公司来说可能是最好的解决方案。
lliu3
2021-03-24 17:04:36 +08:00
baseUrl 通过 store 动态获取

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

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

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

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

© 2021 V2EX