プロダクション用にビルドするときに、REST API URL(例、 http:// localhost:808 )からローカルサーバープレフィックスを削除したい(ng build --prod
)。
環境ファイルenvironment.prod.ts
と関係があると思いますが、それらを使用して上記を実現する例は見つかりません。
誰かが私が始めるのを手伝ってくれたら素晴らしいでしょう!
URLをハードコーディングしないでください。内部にあるenvironment.prod.tsおよびenvironment.tsファイルを使用しますsrc/environments。 localhostの場合、environment.tsファイルで何らかの変数を使用してURLを保存します。
export const environment =
{
production: false,
API_URL: 'http://localhost:8080',
};
本番用、environment.prod.ts
export const environment =
{
production: true,
API_URL: 'http://api.productionurl.com',
};
コードで使用する場合、変数をインポートし、
import { environment } from '../../environments/environment';
....
....
private API_URL= environment.API_URL;
本番で使用する場合は常にangular cliコマンドオプション
ng build --env=prod
現在の環境のファイルの内容は、ビルド中にこれらを上書きします。ビルドシステムはデフォルトでenvironment.ts
を使用する開発環境に設定されますが、ng build --env=prod
を実行すると、代わりにenvironment.prod.ts
が使用されます。どのenvがどのファイルにマッピングされるかのリストは、.angular-cli.json
にあります。
その他のクエリについては、 https://angular.io/guide/deployment
環境設定にAPI_URLを配置することをお勧めしますが、APIとクライアントアプリが同じサーバーまたはドメインから提供されている場合は、相対URLを使用を使用できます。セットアップがはるかに簡単で、ビルドプロセスが簡素化されます。
APIサービスに存在するコードを次に示します。
get(path: string, params: HttpParams = new HttpParams()): Observable<any> {
return this.http.get(`/api${path}`, { params })
.pipe(catchError(this.formatErrors));
}
Environment.API_URLを使用している場合でも、その値を空白に構成できます。
これは、開発環境で別々のlocalhostサーバーからアプリとAPIを提供する場合に役立ちます。たとえば、ng serve
localhost:4200から、localhost:43210でPHP、C#、JavaなどのバックエンドからAPIを実行します。開発にはAPI_URL構成が必要です。
get(path: string, params: HttpParams = new HttpParams()): Observable<any> {
return this.http.get(`${environment.api_url}/api${path}`, { params })
.pipe(catchError(this.formatErrors));
}
おまけとして、アプリで使用できる注入可能なオブジェクトであるApiServiceの例を次に示します。
メインHTMLページの基本参照にも注意してください。
それを実現する1つの方法は、コードのisDevMode()
に基づいて異なるベースURLを定義することです。例えば、
import { isDevMode } from '@angular/core';
// ...
let baseUrl: string;
if (isDevMode()) {
baseUrl = "http://localhost:8080/";
} else {
baseUrl = "http://api.myprodserver.com/";
}
// ...
編集:これは説明のためのものです。実際のコードでは、ある種の(環境に依存する) "config"を使用したいと思うでしょう。