2017-02-07 6 views
2

ich möchte eine angular.io-Anwendung erstellen, aber die Rest-API soll von einem anderen Server-Port geliefert werden.Konfigurieren Sie Port für HTTP in Angular.io

Angular Inhalt von localhost: 4200, die Daten von einem Knoten Express-Server unabhängig gestartet auf localhost: 3000. Aber wenn ich "http" injiziere und benutze, wie kann ich den zu verwendenden Port konfigurieren?

Frank

+0

Verwenden Sie angular cli um Ihr eckiges Projekt zu rüsten? –

+0

ja angular-cli wird verwendet. – fbenoit

Antwort

0

es einfach die URL hinzufügen

this.http.get('http://localhost:3000') 
+0

Wenn ich die Seite auf einem anderen PC ausführen, wird dies nicht funktionieren, da der localhost dann nicht der Server ist. Und ich denke, ich kann es an einem zentralen Ort konfigurieren? – fbenoit

+0

dann holen Sie sich die URL von 'window.location.href' und ersetzen Sie den Port –

0

Unter der Annahme, dass Sie die Angular CLI verwenden Projekt zu Gerüst (Ich hoffe, dass Sie sind), sollten Sie bereits Zugriff auf verschiedene haben Umgebungseinstellungen. Mit diesen Dateien können Sie auf einfache Weise Werte für Ihre Anwendung bereitstellen, die je nach Ausführungsort variieren können.

environment.ts stellt die Schnittstelle für Ihre Umgebung Werte und dann environment.qa.ts, environment.prod.ts usw. (Sie können beliebig viele Umgebungen erstellen, wie Sie möchten) können Sie verschiedene Werte angeben, die zu dieser Umgebung entsprechen.

Unter der Annahme, dass Sie so etwas in Ihrer Umgebung Datei:

export const environment = { 
    myEndpoint: 'localhost:3000' 
} 

Sie können die App mit der --env Flagge die entsprechenden Werte erhalten laufen oder bauen:

ng build --env=qa 

Zugriff Die in Ihrer env-Konfiguration definierten Werte sind einfach. In Ihrem Dienst oder eine Komponente nur einen Import für Umwelt hinzuzufügen:

import { environment } from '../../environments/environment'; 

Und dann den Wert verwenden:

this.http.get(environment.myEndpoint) 
+0

, also konfiguriere ich die Zeichenfolge" localhost: 3000 "und ich kann darauf in der Browser-Anwendung zugreifen. Aber von hier aus ist "localhost" nicht der Server? Was vermisse ich? – fbenoit

+0

Aktualisieren Sie Ihre Umgebungskonfiguration so, dass sie auf den richtigen Serverendpunkt verweist. Für Ihre Entwicklungsumgebung möchten Sie vielleicht, dass es localhost: 3000 ist. Für eine bereitgestellte Umgebung wird es offensichtlich etwas anderes geben –

1

Lösungen mit irgendwie die „richtige“ URL immer nicht funktioniert hat.
Es stellte sich heraus, dass dies zu einer Situation führte, in der ein http.put (...) auf dem Restserver als OPTIONS-Anfrage gesehen wurde.

Angular $http is sending OPTIONS instead of PUT/POST

Ich fand eine Arbeits Weise durch Proxying von dem Winkel Server an den Rest Server:

angular-cli server - how to proxy API requests to another server?

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

die proxy.conf.json:

{ 
    "/api": { 
     "target": "http://localhost:3000", 
     "secure": false 
    } 
} 
Verwandte Themen