2017-01-05 11 views
2

angular-cliブートストラップを使用してAngular2アプリケーションを作成しており、デバッグにはwebpack-dev-serverを使用しています。プロキシ経由でAngular2 HTTPリクエストをリダイレクト

http要求の種類によっては、webpack-dev-server proxy supportを使用して別のバックエンドにリダイレクトしたいとします。

{ 
    "/api/**": { 
    "target": "http://localhost:4201", 
    "secure": false 
    } 
} 

そして、この設定ファイルを使用するために、角CLIをマップ::私はproxy.conf.jsonファイルを作成しました。このため

コンソールメッセージを開始した後

ng serve --proxy-config proxy.conf.json 

は私に正常に作成されているプロキシを通知します

NG Live Development Serverが実行中ですhttp://localhost:4200

プロキシ作成:/ API/** - >http://localhost:4201

しかしhttp://localhost:4200/api/usersからのすべての要求は常に404ステータスコードを返します。私はURLをマッピングする多くの例を試しましたが、何も助けません。

"/api/users" -> "http://localhost:4201/users" 
"/api/" -> "http://localhost:4201/" 

私のプロキシサーバーからのデータが正常に要求されています。私が間違っていることは何ですか?

+0

proxy.config.jsonというファイルを作成しましたが、ng serveをproxy.conf.jsonとともに実行しました。ファイルの名前をproxy.conf.jsonに変更し、http:// localhost:4201の代わりにhttp://google.comを指定すると、私にとってはうまくいきます。だから設定は問題ありません。 –

+0

スペルミスだけ。私はそれを修正しました。しかし、まだ動作していません( – VadimB

+0

あなたの設定でlocalhost:4201をgoogle.comに変更しようとしました –

答えて

4

解決策が見つかりました。私は、プロキシサーバーから転送されたすべての要求をログに記録して、マッピングの仕組みを調べる簡単なエクスプレスサーバーを作成しました。そして私はマッピングについて間違った理解があることを知りました。

/api/users => http://localhost:4201/users 

次のルールを使用してWebPACKのプロキシサーバマップ:代わりに設定ファイルに定義されている厳格なマッピングの

/api/users => http://localhost:4201/users/api/users 

だからここソリューションは、プレフィックス

{ 
    "/api/users": { 
    "target": "http://localhost:4201", 
    "secure": false, 
    "pathRewrite": {"^/api" : ""} 
    } 
} 
を除外する pathRewriteパラメータを追加することです
+0

私はあなたの問題を解決した方法を説明してくれてありがとう!私は、同じケースに正確にあった私の日を救った!完璧に動作します –

+0

@ VadimBこんにちは私はこれらの修正を行った後、 net :: ERR_CONNECTION_REFUSED – Rohitesh

+0

ターゲットエンドポイントに関するいくつかの問題があります。あなたの設定を共有できますか? – VadimB

関連する問題