首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用环境变量将端口添加到所有URL

使用环境变量将端口添加到所有URL
EN

Stack Overflow用户
提问于 2018-07-24 19:09:44
回答 1查看 466关注 0票数 0

我使用环境变量apiHost来设置服务器的URL。

代码语言:javascript
复制
export const environment = {
  production: true,
  apiHost: ':8080'
};

这给出了以下网址:http://myserver/:8080和我想有http://myserver:8080/

应用程序(后端和前端)将被发送到多个客户端,因此没有公共的服务器URL可供设置。我如何才能做到这一点(即使使用环境方法之外的方法)?

EDIT:环境变量的使用示例

代码语言:javascript
复制
getProducts() {
    return this.httpClient.get<Product[]>(environment.apiHost + 'products');
  }
EN

回答 1

Stack Overflow用户

发布于 2018-07-24 19:32:14

环境文件是用于配置应用程序的文件。

在使用时,它们可以根据您选择用来构建应用程序的环境(或A6中的配置)自动更改属性。

让我们用一个例子来解决这个问题。假设您有两个客户端,A和B,您想让它们选择自己的API地址。

您将从创建第一个文件environment.ts开始,它是基本文件:

代码语言:javascript
复制
export const environment = {
  production: false,
  api: 'http://localhost:8080';
};

现在,您的客户端将它们的API地址提供给您。您必须为每个客户端编写一个新文件。

environment.A.ts

代码语言:javascript
复制
export const environment = {
  production: true,
  api: 'http://www.A.com:8080';
};

environment.B.ts

代码语言:javascript
复制
export const environment = {
  production: true,
  api: 'http://www.B.com:8080';
};

现在,在您的服务中,您所要做的就是请求环境文件(基本文件)。例如:

代码语言:javascript
复制
import { environment } from 'src/environments/environment'

export class UserService {
  constructor(private http: HttpClient) {}

  getUsers() { return this.http.get<any>(environment.api); }
}

一旦您的应用程序完成,您将不得不构建它的。这就是环境切换的地方。

对于第一个客户端,您将运行这个客户端(考虑到您已经正确设置了angular-cli.json文件)

代码语言:javascript
复制
ng build --prod --env A

对于第二个:

代码语言:javascript
复制
ng build --prod --env B

这样,您的就不必做任何其他的操作:您的HTTP调用将被发送到正确的API地址。

如果您只在您的环境中输入端口,这意味着您已经在应用程序中硬编码了URL,这意味着您的客户端将无法更改它。

如果您没有对URL进行硬编码,但它不在环境文件中,那么您就没有遵循Angular建议的最佳实践。最糟糕的是,你没有充分利用框架的潜力。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51497111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档