Bu get()
işlevi IntelliSense aracılığıyla buldum . Yani, benzer bilgileri arayan herkes için buraya göndereceğim.
Her neyse, sözdizimi neredeyse aynı, ancak biraz farklı. URLSearchParams()
Parametreleri kullanmak yerine olarak başlatılması gerekir HttpParams()
ve get()
şimdi işlev içindeki özellik params
yerine çağrılır 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 })
}
Aslında bu sözdizimini biraz daha agnostik olarak tercih ediyorum. Ayrıca kodu biraz daha kısaltmak için yeniden düzenledim.
getLogs(logNamespace): Observable<any> {
return this._HttpClient.get(`${API_URL}/api/v1/data/logs`, {
params: new HttpParams().set('logNamespace', logNamespace)
})
}
Çoklu Parametreler
Şimdiye kadar bulduğum en iyi yol, içinde tanımlamak Params
istediğim tüm parametreleri içeren bir nesne tanımlamaktır. @Estus aşağıda açıklamada belirttiği gibi, büyük cevapların bir yeri vardır Bu Soru birden çok parametre atamak için nasıl olarak.
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 })
Koşullu Mantık ile Çoklu Parametreler
Sıklıkla birden fazla parametre ile yaptığım başka bir şey, her çağrıda varlıklarını gerektirmeden birden fazla parametrenin kullanımına izin vermektir. Lodash kullanarak, API çağrılarına koşullu olarak parametre eklemek / kaldırmak için oldukça basittir. Lodash veya Undercores veya vanilya JS'de kullanılan tam işlevler uygulamanıza bağlı olarak değişebilir, ancak özellik tanımını kontrol etmenin oldukça iyi çalıştığını gördüm. Aşağıdaki işlev yalnızca işleve iletilen parametreler değişkeni içinde karşılık gelen özelliklere sahip parametreleri iletir.
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 }
Çıkış stackoverflow.com/a/54211610/5042169