Skończyło się na tym, że znalazłem go za pośrednictwem funkcji IntelliSense get()
. Więc opublikuję to tutaj dla każdego, kto szuka podobnych informacji.
W każdym razie składnia jest prawie identyczna, ale nieco inna. Zamiast używać URLSearchParams()
parametrów, należy je zainicjować jako, HttpParams()
a właściwość w get()
funkcji jest teraz wywoływana params
zamiast 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 })
}
Właściwie wolę tę składnię, ponieważ jest trochę bardziej niezależna od parametrów. Zreformowałem również kod, aby był nieco bardziej skrócony.
getLogs(logNamespace): Observable<any> {
return this._HttpClient.get(`${API_URL}/api/v1/data/logs`, {
params: new HttpParams().set('logNamespace', logNamespace)
})
}
Wiele parametrów
Najlepszym sposobem, jaki znalazłem do tej pory, jest zdefiniowanie Params
obiektu ze wszystkimi parametrami, które chcę zdefiniować, zdefiniowanymi w ramach. Jak @estus wskazał w komentarzu poniżej, w tym pytaniu jest wiele świetnych odpowiedzi, jak przypisać wiele parametrów.
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 })
Wiele parametrów z logiką warunkową
Inną rzeczą, którą często robię z wieloma parametrami, jest zezwolenie na użycie wielu parametrów bez konieczności ich obecności w każdym wywołaniu. Korzystając z Lodash, bardzo łatwo jest warunkowo dodawać / usuwać parametry z wywołań interfejsu API. Dokładne funkcje używane w Lodash, Underscores lub vanilla JS mogą się różnić w zależności od aplikacji, ale zauważyłem, że sprawdzanie definicji właściwości działa całkiem dobrze. Poniższa funkcja przekazuje tylko parametry, które mają odpowiednie właściwości w obrębie zmiennej parametrów przekazanej do funkcji.
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 }
Sprawdź stackoverflow.com/a/54211610/5042169