Acabei encontrando-o através do IntelliSense na get()
função. Então, vou postá-lo aqui para quem estiver procurando informações semelhantes.
De qualquer forma, a sintaxe é quase idêntica, mas um pouco diferente. Em vez de usar, URLSearchParams()
os parâmetros precisam ser inicializados como HttpParams()
e a propriedade dentro da get()
função agora é chamada em params
vez 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 })
}
Na verdade, eu prefiro essa sintaxe, pois é um pouco mais independente de parâmetro. Também refatorei o código para torná-lo um pouco mais abreviado.
getLogs(logNamespace): Observable<any> {
return this._HttpClient.get(`${API_URL}/api/v1/data/logs`, {
params: new HttpParams().set('logNamespace', logNamespace)
})
}
Parâmetros múltiplos
A melhor maneira que eu encontrei até agora é definir um Params
objeto com todos os parâmetros que eu quero definir definidos dentro. Como @estus apontou no comentário abaixo, há muitas ótimas respostas nesta pergunta sobre como atribuir vários 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 })
Vários parâmetros com lógica condicional
Outra coisa que costumo fazer com vários parâmetros é permitir o uso de vários parâmetros sem exigir sua presença em todas as chamadas. Usando o Lodash, é bastante simples adicionar / remover condicionalmente parâmetros de chamadas para a API. As funções exatas usadas no Lodash, no Underscores ou no vanilla JS podem variar dependendo do seu aplicativo, mas eu descobri que a verificação da definição da propriedade funciona muito bem. A função abaixo passará apenas parâmetros que possuem propriedades correspondentes dentro da variável de parâmetros passados para a função.
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 }
Confira stackoverflow.com/a/54211610/5042169