get()
関数のIntelliSenseでそれを見つけました。そこで、同様の情報を探している人のためにここに投稿します。
とにかく、構文はほぼ同じですが、少し異なります。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 })
条件付きロジックを持つ複数のパラメーター
私が複数のパラメーターでよく行うもう1つのことは、すべての呼び出しでそれらの存在を必要とせずに複数のパラメーターの使用を許可することです。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