Ich fand es durch die Intellisense über die get()
Funktion. Ich muss Intellisense lieben. Ich poste es hier für jeden, der nach ähnlichen Informationen sucht.
Anyways die Syntax ist fast identisch, aber etwas anders. Anstatt URLSearchParams()
zu verwenden, müssen die Parameter als HttpParams()
initialisiert werden und die Eigenschaft innerhalb der get()
-Funktion heißt jetzt params
anstelle von search
.
import { HttpClient, HttpParams } from '@angular/common/http';
getLogs(logNamespace): Observable<any> {
// Setup log namespace query parameter
let params = new HttpParams().set('logNamespace', logNamespace);
return this._HttpClient.get(`${API_URL}/api/v1/data/logs`, { params: params })
}
ich eigentlich lieber diese Syntax als ein wenig mehr Parameter Agnostiker. Ich habe den Code auch umstrukturiert, um ihn etwas gekürzter zu machen.
getLogs(logNamespace): Observable<any> {
return this._HttpClient.get(`${API_URL}/api/v1/data/logs`, {
params: new HttpParams().set('logNamespace', logNamespace)
})
}
Mehrere Parameter
mir klar, wie viel muss ich oft mehrere Parameter in eine Abfrage übergeben, so dachte ich, ich einen Abschnitt über, wie das auch zu tun hinzufügen würde. Der beste Weg, den ich bisher gefunden habe, ist ein Params
Objekt mit allen Parametern zu definieren, die ich definieren möchte. Als Estus im Kommentar unten hingewiesen, gibt es eine Menge guter Antworten in This Question, wie Sie mehrere Parameter zuweisen.
getLogs(parameters) {
// Initialize Params Object
let Params = new HttpParams();
// Begin assigning parameters
Params = Params.append('firstParameter', parameters.valueOne);
Params = Params.append('secondParameter', parameters.valueTwo);
// Make the API call using the new parameters.
return this._HttpClient.get(`${API_URL}/api/v1/data/logs`, { params: Params })
Mehrere Parameter mit Conditional Logic
Eine andere Sache, die ich oft mit mehreren Parametern zu tun ist die Verwendung mehrerer Parameter ermöglichen, ohne ihre Anwesenheit in jedem Gespräch zu erfordern. Mit Lodash ist es ziemlich einfach, Parameter aus Aufrufen der API bedingt hinzuzufügen/zu entfernen. Die genauen Funktionen, die in Lodash oder Unterstrichen oder Vanilla JS verwendet werden, können je nach Anwendung variieren, aber ich habe festgestellt, dass das Überprüfen der Eigenschaftsdefinition ziemlich gut funktioniert. Die folgende Funktion übergibt nur Parameter mit entsprechenden Eigenschaften innerhalb der an die Funktion übergebenen Parametervariablen.
getLogs(parameters) {
// Initialize Params Object
let Params = new HttpParams();
// Begin assigning parameters
if (!_.isUndefined(parameters)) {
Params = _.isUndefined(parameters.valueOne) ? Params : Params.append('firstParameter', parameters.valueOne);
Params = _.isUndefined(parameters.valueTwo) ? Params : Params.append('secondParameter', parameters.valueTwo);
}
// Make the API call using the new parameters.
return this._HttpClient.get(`${API_URL}/api/v1/data/logs`, { params: Params })
Das erste Snippet ist falsch. 'let params = new HttpParams(); params.set (...) 'wird nicht wie erwartet funktionieren. Siehe https://stackoverflow.com/questions/45459532/why-httpparams-doesnt-work-in-multiple-line-in-angular-4-3/45459672#45459672 – estus
Ich ging weiter und editierte es. Sollte jetzt sein. Vielen Dank! – joshrathke
@joshrathke Könntest du bitte hinzufügen, wie man Header und Params zusammenfügt? –