Setzen Sie die Basis-url für Winkel-2 http-requests
Ich bin versucht, den Basis-url für alle meine Winkel-2 http-requests. Im folgenden ist der Basis-set-up für meine Anwendung.
class HttpOptions extends BaseRequestOptions {
url:string = "http://10.7.18.21:8080/api/";
}
bootstrap(AppComponent, [
HTTP_PROVIDERS,
provide(RequestOptions, {useClass: HttpOptions})
]);
export class AppComponent {
users:Array<User>
constructor(private http: Http) {
http.get("/users")
.subscribe(res => this.users = res.json());
}
}
Wird die Anfrage nicht gesendet http://10.7.18.21:8080/api/users wie ich erwartet hatte von meiner Konfiguration. Stattdessen wird die Anfrage an http://localhost:8000/users.
Wie setze ich die base-url für die http-Anfrage in eckige 2-Anwendung?
Ich bin mit Winkel-2.0.0-beta.0.
InformationsquelleAutor der Frage TheKojuEffect | 2015-12-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für eckige 4.3+ und @Winkel/common/http
Einfach mit Abfangjäger
app.- Modul.ts
EDIT: HttpClient-und HttpInterceptor eingeführt werden, sind in Eckige 4.3
InformationsquelleAutor der Antwort vegazz
UPDATE: Siehe @vegazz Antwort für Eckige 4.
Eckige 2.2.1, sollten die folgenden Präfix-web-api-Basis-url und stellt eine kleinere Stellfläche:
Einzuspritzen Anbieter in einer app.- Modul.ts:
Beispiel:
Scheint es, um alle Methoden (GET, PUT, POST, ...)
InformationsquelleAutor der Antwort corolla
Für Angular2 Version 2.2 (für Dec 2016)
Winkel von RC5 mark
HTTP_PROVIDERS
als veraltet und versuchen, die Dinge bewegen, in@NgModule
die obige Lösung ist nicht wirklich anwendbar, so wie Ihre Dokumentation. Ich Kreuz bezeichnet mehrere andere Antworten und meinen Weg gefunden zu implementieren Basis-url, hoffe, dass dies hilfreich sein, jemand anderes.Die grundlegende Idee ist, statt die Dinge zu tun, in der bootstrap-wir bewegen Dinge zu
AppModule
.app.- Modul.ts
Bewegen und CustomRequestOptions in einem separaten injizierbaren service
Bearbeiten für die Anfrage einer anderen Methode als GET.
Wenn Sie versuchen, um Anfrage senden Typ andere, als die Vorherige Methode fehlschlägt, um zu injizieren, die URL in der Anfrage. Dies ist, weil Angular2 generieren neue
RequestOptions
andere alsthis._defaultOptions
deren merge-Methode nicht überschreiben, indem Sie unsere CustomRequestOptions. (Siehe die Quellcode hier).Also anstatt
super.merge(...)
im letzten Schritt CustomRequestOptions merge-Methode, die ich erzeugt eine neue Instanz vonCustomRequestOptions
zu gewährleisten, die folgende operation wird immer noch funktionieren.Funktioniert, POST -, PUT -, DELETE-Methode als gut. Hoffe, das ist hilfreich.
InformationsquelleAutor der Antwort yeelan
In Winkel-2.0.0-beta.6 dies können Sie erreichen, durch das überschreiben 'merge'
InformationsquelleAutor der Antwort Adrian Sobiczewski
Nach einem Blick auf Quellen für
BaseRequestOptions
RequestOptions
undHttp
Klassen:Scheint es, dass die
url
Eigenschaft entspricht der Standard-URL, aber nicht den Präfix für URLs.Zur Implementierung der use-case -, würde ich vorschlagen, setzen Sie einen service vor dem http-Objekt und Spritzen Sie dann den Dienst. So etwas wie:
Und
Dass sagte, diese könnten vielleicht dazu beigetragen, Angular2 sich selbst 😉
Hoffe es hilft dir,
Thierry
InformationsquelleAutor der Antwort Thierry Templier
Siehe auch https://github.com/angular/angular/blob/1bec4f6c6135d7aaccec7492d70c36e1ceeaeefa/modules/angular2/test/router/path_location_strategy_spec.ts#L88
InformationsquelleAutor der Antwort Günter Zöchbauer
Anderen Ansatz: während der Entwicklung ausführen Ihrer app auf localhost konfigurieren einer proxy statt.
proxy.conf.json
Mehr: link
InformationsquelleAutor der Antwort istibekesi
erstellen .ts-Datei
Dann in der app.- Modul.ts
Anbieter hinzufügen im Abschnitt " Anbieter
dann in Ihren Dienst.ts-http-Aufruf muss wie unter Beispiel
Hier /api ersetzt werden, die durch Ihre Basis-URL http://localhost:8080
mehr details
http://shabeen.in/webschool/how-to-set-angular-2-service-http-base-url/
InformationsquelleAutor der Antwort shabeen vk