Ho finito per trovarlo tramite IntelliSense sulla get()
funzione. Quindi, lo posterò qui per chiunque sia alla ricerca di informazioni simili.
Comunque, la sintassi è quasi identica, ma leggermente diversa. Invece di utilizzare URLSearchParams()
i parametri è necessario inizializzare come HttpParams()
e la proprietà all'interno della get()
funzione è ora chiamata params
invece di 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 })
}
In realtà preferisco questa sintassi perché è un po 'più agnostica di parametro. Ho anche riformulato il codice per renderlo leggermente più abbreviato.
getLogs(logNamespace): Observable<any> {
return this._HttpClient.get(`${API_URL}/api/v1/data/logs`, {
params: new HttpParams().set('logNamespace', logNamespace)
})
}
Parametri multipli
Il modo migliore che ho trovato finora è definire un Params
oggetto con tutti i parametri che voglio definire definiti all'interno. Come ha sottolineato @estus nel commento qui sotto, ci sono molte grandi risposte in questa domanda su come assegnare più parametri.
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 })
Più parametri con logica condizionale
Un'altra cosa che faccio spesso con più parametri è consentire l'uso di più parametri senza richiedere la loro presenza in ogni chiamata. Utilizzando Lodash, è abbastanza semplice aggiungere / rimuovere in modo condizionale i parametri dalle chiamate all'API. Le funzioni esatte utilizzate in Lodash o Underscores o JS vaniglia possono variare a seconda dell'applicazione, ma ho scoperto che il controllo della definizione della proprietà funziona abbastanza bene. La funzione seguente passerà solo i parametri che hanno proprietà corrispondenti all'interno della variabile parametri passata nella funzione.
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 }
Partenza stackoverflow.com/a/54211610/5042169