我如何在外部文件中以角2+设置api端点url

问题描述 投票:0回答:1

我有一个普通的问题,当我在开发模式下构建我的角度项目并将dist文件复制到服务器文件夹中时,当更改服务器URL时,找不到端点url进行更改,因此我必须使用新的端点URL重建我的项目。

我如何在外部文件中定义webapi的端点,以便将来动态地使用,通常将其像下面这样存储在environment.prod.ts中?>

export const environment = {
    production: true,
    serverBaseUrl: 'http://example.com'
};

并使用命令this.http.get(environment.serverBaseUrl + '/api/...')调用服务文件>

我有一个普通的问题,当我在开发模式下构建我的角度项目并将dist文件复制到服务器文件夹中时,当更改服务器URL时,我找不到端点URL来对其进行更改,所以我必须...]]

这是可能的,但我认为不是正确的方法。

a)如果您使用的是容器和mircroservice,则最好使用相对的URL,例如“ ../api-service/login”。如果此api的根目录不同,则可以设置代理或负载平衡器。

b)另一种方法是设置占位符serverbaseUrl:'xxxxxx',deploy-script可以替换已编译的min.js文件中的xxxxxx。我不喜欢这种方式,但是效果很好。

c)可以将json配置文件放入资产文件夹asset / config / urls.json中。可以在启动时加载(应用程序组件)。可以通过静态forRoot()将这些url设置为每个服务。 forRoot必须由您实现。AppComponent构造函数:

authAjaxService.forRoot(theJsonResponse);

@Injectable()
export class AuthAjaxService {

private static readonly config = {
    loginUrl: 'assets/mock-data/auth/login.json',
    logoutUrl: 'assets/mock-data/auth/logout.json',
};

static forRoot(config) {
    Object.assign(this.config, config);
}

login(loginData: LoginRequestData): Observable<LoginResponseData> {
   const url = AuthAjaxService.config.loginUrl;
   return this.http.post<LoginResponseData>(url, loginData);
}
...

c)将使您的应用启动速度变慢,因为您需要通过ajax调用来获取配置。

angular typescript endpoint
1个回答
0
投票

这是可能的,但我认为不是正确的方法。

© www.soinside.com 2019 - 2024. All rights reserved.