Terminé encontrándolo a través de IntelliSense en la get()
función. Entonces, lo publicaré aquí para cualquiera que esté buscando información similar.
De todos modos, la sintaxis es casi idéntica, pero ligeramente diferente. En lugar de usar URLSearchParams()
los parámetros, debe inicializarse como HttpParams()
y get()
ahora se llama a la propiedad dentro de la función en params
lugar de 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 })
}
De hecho, prefiero esta sintaxis ya que es un poco más agnóstico de parámetros. También refactoricé el código para hacerlo un poco más abreviado.
getLogs(logNamespace): Observable<any> {
return this._HttpClient.get(`${API_URL}/api/v1/data/logs`, {
params: new HttpParams().set('logNamespace', logNamespace)
})
}
Parámetros Múltiples
La mejor manera que he encontrado hasta ahora es definir un Params
objeto con todos los parámetros que quiero definir definidos dentro. Como @estus señaló en el comentario a continuación, hay muchas respuestas excelentes en esta pregunta sobre cómo asignar múltiples parámetros.
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 })
Parámetros múltiples con lógica condicional
Otra cosa que a menudo hago con múltiples parámetros es permitir el uso de múltiples parámetros sin requerir su presencia en cada llamada. Con Lodash, es bastante simple agregar / eliminar condicionalmente los parámetros de las llamadas a la API. Las funciones exactas utilizadas en Lodash o Underscores, o vanilla JS pueden variar según su aplicación, pero descubrí que verificar la definición de propiedad funciona bastante bien. La siguiente función solo pasará parámetros que tengan propiedades correspondientes dentro de la variable de parámetros pasada a la función.
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 }
Consulte stackoverflow.com/a/54211610/5042169