В итоге я нашел его через IntelliSense для get()
функции. Итак, я отправлю его здесь для всех, кто ищет аналогичную информацию.
В любом случае, синтаксис почти идентичен, но немного отличается. Вместо использования URLSearchParams()
параметров необходимо инициализировать as, HttpParams()
а свойство внутри get()
функции теперь вызывается params
вместо search
.
import { HttpClient, HttpParams } from '@angular/common/http';
getLogs(logNamespace): Observable<any> {
let params = new HttpParams().set('logNamespace', logNamespace);
return this._HttpClient.get(`${API_URL}/api/v1/data/logs`, { params: params })
}
На самом деле я предпочитаю этот синтаксис, поскольку он немного больше не зависит от параметров. Я также переработал код, чтобы сделать его немного более сокращенным.
getLogs(logNamespace): Observable<any> {
return this._HttpClient.get(`${API_URL}/api/v1/data/logs`, {
params: new HttpParams().set('logNamespace', logNamespace)
})
}
Несколько параметров
Лучший способ, который я нашел до сих пор, - это определить Params
объект со всеми параметрами, которые я хочу определить внутри. Как отметил @estus в комментарии ниже, в этом вопросе есть много отличных ответов о том, как назначить несколько параметров.
getLogs(parameters) {
let params = new HttpParams();
params = params.append('firstParameter', parameters.valueOne);
params = params.append('secondParameter', parameters.valueTwo);
return this._HttpClient.get(`${API_URL}/api/v1/data/logs`, { params: params })
Несколько параметров с условной логикой
Еще одна вещь, которую я часто делаю с несколькими параметрами, - это возможность использовать несколько параметров, не требуя их присутствия при каждом вызове. Используя Lodash, довольно просто условно добавлять / удалять параметры из вызовов API. Точные функции, используемые в Lodash, Underscores или vanilla JS, могут отличаться в зависимости от вашего приложения, но я обнаружил, что проверка определения свойств работает довольно хорошо. Функция ниже будет передавать только параметры, которые имеют соответствующие свойства в переменной параметров, переданной в функцию.
getLogs(parameters) {
let params = new HttpParams();
if (!_.isUndefined(parameters)) {
params = _.isUndefined(parameters.valueOne) ? params : params.append('firstParameter', parameters.valueOne);
params = _.isUndefined(parameters.valueTwo) ? params : params.append('secondParameter', parameters.valueTwo);
}
return this._HttpClient.get(`${API_URL}/api/v1/data/logs`, { params: params })
this.httpClient.get(url, { params }
Посмотрите stackoverflow.com/a/54211610/5042169