Am Ende fand ich es über IntelliSense in der get()
Funktion. Also werde ich es hier für alle posten, die nach ähnlichen Informationen suchen.
Wie auch immer, die Syntax ist nahezu identisch, aber leicht unterschiedlich. Anstatt URLSearchParams()
die Parameter zu verwenden, müssen sie als initialisiert werden HttpParams()
und die Eigenschaft innerhalb der get()
Funktion wird jetzt params
anstelle von aufgerufen 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 })
}
Eigentlich bevorzuge ich diese Syntax, da sie etwas parameterunabhängiger ist. Ich habe den Code auch überarbeitet, um ihn etwas abgekürzt zu machen.
getLogs(logNamespace): Observable<any> {
return this._HttpClient.get(`${API_URL}/api/v1/data/logs`, {
params: new HttpParams().set('logNamespace', logNamespace)
})
}
Mehrere Parameter
Der beste Weg, den ich bisher gefunden habe, besteht darin, ein Params
Objekt mit allen Parametern zu definieren, die ich definieren möchte. Wie @estus im Kommentar unten hervorhob, gibt es in dieser Frage viele gute Antworten , wie mehrere Parameter zugewiesen werden können.
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 bedingter Logik
Eine andere Sache, die ich oft mit mehreren Parametern mache, ist die Verwendung mehrerer Parameter, ohne dass diese bei jedem Aufruf vorhanden sein müssen. Mit Lodash ist es ziemlich einfach, Parameter bedingt zu Aufrufen der API hinzuzufügen / daraus zu entfernen. Die genauen Funktionen, die in Lodash, Underscores oder Vanilla JS verwendet werden, können je nach Anwendung variieren. Ich habe jedoch festgestellt, dass die Überprüfung der Eigenschaftsdefinition recht gut funktioniert. Die folgende Funktion übergibt nur Parameter, die entsprechende Eigenschaften innerhalb der an die Funktion übergebenen Parametervariablen haben.
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 })
this.httpClient.get(url, { params }
Check out stackoverflow.com/a/54211610/5042169