2

我已经搜索和搜索,似乎无法找到这种模式。我认为自己是中级 Vue 开发人员,但是,后端是我的强项。我正在开发一款将被经销商贴上白标签的应用程序。虽然可以有多个构建,但最好避免这种构建。该设置是一个独立的 vue-cli SPA,连接到 Laravel api 后端并使用 Sanctum auth 包。所以我需要调用同一个域。问题:经销商将在他们自己的域上。问:是否有一种模式/解决方案可以为不同的域(其他项目将通过主题/样式表)动态加载配置(主要是 baseURL)。目前我有一些典型的条目:

IEaxios.defaults.baseURL = process.env.VUE_APP_API_BASE_URL

基本上,根据网站所服务的域,我想要一个动态/运行时配置。我觉得这已经解决了,但我似乎无法在某些方向上使用正确的搜索词,所以任何事情都有帮助。我尝试了几件事:

1)在js中解析,但似乎无法让它在过程中足够早地运行以生效?它似乎有效,但我无法让它“点击”

2) 使用当前域访问公共 API 端点并获取配置。同样,可以实现,但似乎无法将其正确注入 Vue 端?

任何资源、模式参考或一般指导都会非常感激,以避免仅仅为几个变量维护多个构建。也就是说,我认为这一切都没有太多开销,但也愿意告诉我我错了,需要多个构建。

最终结果

访问的网址是https://mydomaincom

然后baseURL = https://api.mydomiancom

访问过的网址https://resellerdomaincom

然后baseURL=https://api.resellerdomaincom

4

2 回答 2

0

我认为没有解决您问题的通用模式-我在网上没有找到任何东西。

最好的软件设计解决方案可能如下:

  • 有一个后端
  • 仅将客户分发给您的客户/经销商

显然,后端可以看到请求来自的应用程序的域并相应地管理逻辑。

祝你的项目好运。

于 2020-05-03T16:04:54.213 回答
0

老实说,这个问题是如何提出的,这对我来说并不是很清楚。虽然我通常的模式是:

像这样创建一个 axios 实例:

export const axiosInstance = axios.create({
  // ...configs
  baseURL: process.env.VUE_APP_URL_YOU_WOULD_LIKE_TO_HIT
})

然后每当我向某个 api 发出请求时,我都会使用这个实例。

编辑:根据您的编辑,您可以将客户端发布给每个客户,并为每个客户提供一个 .env 文件,或者您可以拥有一个网关系统,其中客户端 axios 端点始终相同,点击始终是同一台服务器,然后服务器根据您自己的逻辑从那里决定要 ping 什么

于 2020-05-03T15:08:04.927 回答