动态更改SPA的API路由

时间:2018-10-18 12:11:48

标签: vue.js webpack .net-core

我目前正在使用Vue.js和webpack构建SPA应用程序进行捆绑。后端API是使用.Net Core构建的。在本地运行时,Vue应用程序在后端访问localhost。我需要能够根据环境动态更改API的路由。有没有一种方法,而不必执行考虑当前URL的大型switch语句?要求是不允许我们为不同的环境更改webpack捆绑包,换句话说,一旦捆绑了,它就必须保持捆绑状态。我试图将静态配置文件传递到捆绑软件中,并根据环境动态更改它们,但是不幸的是,这没有用,因为它会达到它们中原来的值。

1 个答案:

答案 0 :(得分:0)

webpack开发服务器具有代理功能。开发时,您可以使用它来代理本地运行的后端。

https://webpack.js.org/configuration/dev-server/#devserver-proxy

例如您可以使用配置将'/ api'指向'localhost:8888 / api'。

您的应用程序在部署时是否在相同的url上运行?如果不是这样,您可能需要反向代理才能将请求传递到后端。

您可以使用axios拦截器,以便仅将开关放在一个位置:

axios.interceptors.request.use(config => {
    // check location.host name and append the backend url you want
  });

请参阅https://github.com/axios/axios#interceptors

但是,这有点危险,因为switch语句中的URL是字符串,因此即使压缩/串联,也可以从代码中提取所有环境URL。

另一种选择是向客户端代码托管的服务器添加某种终结点,然后在启动应用程序时查询该配置。