2017-01-26 4 views
0

クイックバージョンのhrefベースを使用して - 私は私を信じて、何がしたい: はどのように私は<base href>要求URLの問題

長いバージョンを無視するようにangular2 httpサービスを構成することができます - より良いアプローチがある場合には: で私のプロジェクト私たちは、Apacheを使用して2つの角度アプリを提供している:彼らの両方が同じエンドポイントを使用し

http://host/index.html - angular 1 
http://host/ng2/index.html - angular 2 

http://host/api/foo 

両方のアプリが同じ仮想ホストを使用しています。角2アプリはディスク上のpublic/ng2の下にあります。

問題はこれに沸く:

私が使用している場合:<base href="/ng2/">角度アプリをロード罰金。 しかし、httpサービスを使用しているapiへのリクエストはすべて汚染されます。

http.get('/api/foo/2') goes to http://host/ng2/api/foo 

私の現在のソリューションは、<base href="/">にベースHREFを設定し、直接/公共の下にindex.htmlが以外のすべてのangular2ファイルを置くことです。 (index.htmlはまだ/ public/ng2にあります)これは動作しますが、混乱しています。

は、私が持っていると思い何を:

  • すべてangular2ファイルは、/公共/ NG2である
  • 発信要求がNG2に添付されていない(なぜなら<base href="/ng2/">または他のApache設定の作品)それら。

終わりでURL

+2

: 'http.get(api_root + '/ fooの/ 2')' –

+0

感謝@KiJéy 。私が言いたいことは、複数のインスタンスが導入されていることでした。それぞれは独自の/ api/foo/2を持っています。例えば。 (http:// customer1-host/api/fooおよびhttp:// customer2-host/api/foo)。だから、相対的な道がはるかに良いでしょう。 – alfthan

+0

相対パスがより良いと思われる理由を説明できますか?私は@ KiJyyに同意し、URLを環境ファイルに絶対パスを入れて置く。 – shusson

答えて

0

をハードコーディングするためのオプションではありませんI Ki Jeyが提案しAPIに到達するための絶対的なURLを使用しました。

service.base.ts: 
protected getAbsoluteUrl(relativeUrl : String) : String { 
    return document.location.protocol + "//" + document.location.host + "/" + relativeUrl 
} 

service.ts: 
class service extends BaseService 
    getTheFoo(){ 
    http.get(this.getAbsoluteUrl(foo/2))... 
    } 
私はHTTP呼び出しのためのあなたのAPIの完全なベースURLで$コンフィグ変数を持つrecommandなどのように、HTTPを使用し