我想要实现的是让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的信息