Schnell Version mit Basis - Was ich glaube, ich will: Wie kann ich angular2 http
Service konfigurieren <base href>
URL Probleme, wenn href
Längere Version zu ignorieren - Falls es ein besserer Ansatz ist: In mein Projekt bedienen wir zwei Winkel apps Apache mit:
http://host/index.html - angular 1
http://host/ng2/index.html - angular 2
Sie beide den gleichen Endpunkt
http://host/api/foo
Beide Apps verwenden den gleichen vhost. Die App angular 2 befindet sich unter public/ng2 auf der Festplatte.
Das Problem läuft darauf hinaus, diese nach unten:
Wenn ich: <base href="/ng2/">
die Winkel App lädt in Ordnung. Allerdings werden alle Anfragen an die API mit dem http-Dienst verschmutzt.
http.get('/api/foo/2') goes to http://host/ng2/api/foo
Meine aktuelle Lösung ist die Basis href <base href="/">
und setzen alle angular2 Dateien außer index.html direkt unter/public einzustellen. (index.html ist immer noch in/public/ng2) Das funktioniert, aber es ist ein Durcheinander.
Was würde ich gerne haben:
- Alle angular2 Dateien in/public/NG2 sind (funktioniert wegen
<base href="/ng2/">
oder anderen Apache config) - Outgoing Anfragen haben nicht NG2 angehängt Sie.
- zB http.get ('/ api/foo/2') =>http://host/api/foo
Es ist keine Option die URL
ich für HTTP-Aufrufe einen $ config Variable mit der vollen Basis-URL Ihrer API empfehlen würde und http etwa so: 'http.get (api_root + '/ foo/2')' –
Dank @ KiJéy . Was ich vergessen habe zu erwähnen, ist, dass wir mehrere Instanzen implementiert haben. Jeder mit seinem eigenen/api/foo/2. Z.B. (http: // customer1-host/api/foo und http: // customer2-host/api/foo). Ein relativer Pfad wäre also viel besser. – alfthan
Können Sie erklären, warum Sie denken, dass ein relativer Pfad besser wäre? Ich stimme @ KiJéy zu, stelle die URL in eine Umgebungsdatei und verwende absolute Pfade. – shusson