在Vue.js中请求时,如何使用baseurl中的变量并编写配置



我想要实现的是让vue提供一个foo1.bar.com,其中"foo";是多租户项目中租户的名称。因此,vue使用的基本API在访问foo2.bar.com时变为foo2.bar.com/API,在访问foo3.bar.com时变成foo3.bar.com/API。

上下文:这是实现与现有多租户后端API一致性的建议方法,其URL类似于t1.site.com/API和t2.site.com/API.

这是在reddit上提出的,作为对这个问题的回应:

我几乎已经完成了第一次解耦(前端和后端separate(项目-后端使用django+rest编写框架并实现多租户(意味着我的api端点外观比如tenant1.sitename.com/api/endpoint和tenant2.sitename.com/api/endpoint(从前端开始,使用我的api应该不会有问题所有租户都是一样的,所以django可以只使用相同的vue前端,无论哪个租户。。蚂蚁然后它袭击了我——实际上它使用的是vue的djangoapi,而不是其他方式。。而vue没有知道选择了哪个租户。。所以现在我离最后期限很近了迷路的

我的main.ts看起来像这个

axios.defaults.baseURL='http://tenant1.mysite.local:8000/api/';axios.defaults.withCredentials=真;

并且工作。。。而我需要第一个租户的数据。。。。

我不完全确定变量应该在baseUrl中使用,或者应该使用typescript,但正如我所说,我当前的设置在main.ts中有baseUrl。

重申:我有一个后端服务api,用于不同的租户,如t1.foo.com/api和t2.foo.com/api,还有一个前端,目前只向设置中定义的一个baseurl发送请求,例如t1.foocom/api;然后它在t1.foo.com/home上提供它。问题是,如果我想去t2.foo.com/home,它仍然会向t1.foocom/api发送请求。我既不知道如何使不同的(t1,t2,t3(url可访问,也不知道如何让它向匹配的api发送请求。当我转到t1.foo.com/home时,我想避免我的前台将api请求发送到t1.foo.com.cn.api,当我转到t2.foo.com/home时,我希望发送到t2.foo.com.cn/api。

我之前问过一个类似的问题,我得到了完整详细的答案

如果我理解正确,我认为最好的解决方案是在vue.config.js文件中设置这个:

publicPath: './'

它将所有到后端的请求的url设置为所服务的html文件(包括css、js…等静态文件(的相对url。例如,如果您使用此urlt1.mysite.com/index.html访问您的应用程序,则所有请求都将发送到t1.mysite.com/..../....

你可以在vue.js文档中阅读更多关于publicPath的信息

最新更新