Я знайшов це через функцію IntelliSense на get()
функції. Тож я опублікую його тут для всіх, хто шукає подібну інформацію.
У будь-якому випадку синтаксис майже однаковий, але дещо інший. Замість використання URLSearchParams()
параметрів потрібно ініціалізувати як, HttpParams()
а властивість у межах get()
функції тепер викликається params
замість 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 })
}
Я фактично віддаю перевагу цьому синтаксису як його трохи більш агресивному параметру. Я також відновив код, щоб зробити його трохи більш скороченим.
getLogs(logNamespace): Observable<any> {
return this._HttpClient.get(`${API_URL}/api/v1/data/logs`, {
params: new HttpParams().set('logNamespace', logNamespace)
})
}
Кілька параметрів
Найкращий спосіб, який я до цього часу знайшов, - це визначити Params
об'єкт з усіма параметрами, які я хочу визначити, визначеними всередині. Як @estus зазначив у коментарі нижче, у цьому запитанні є багато чудових відповідей щодо того, як призначити кілька параметрів.
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 })
Кілька параметрів з умовною логікою
Інша річ, яку я часто роблю з кількома параметрами, - це дозволити використання декількох параметрів, не вимагаючи їх присутності в кожному дзвінку. За допомогою Lodash досить просто умовно додавати / видаляти параметри з викликів до API. Точні функції, які використовуються в Lodash або Underscores або ванільній JS, можуть залежати від вашої програми, але я виявив, що перевірка визначення властивості працює досить добре. Функція нижче передасть лише параметри, які мають відповідні властивості в межах змінної параметрів, переданих у функцію.
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 }
Перевірте stackoverflow.com/a/54211610/5042169