我最终通过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 })
带条件逻辑的多个参数
我经常对多个参数执行的另一件事是允许使用多个参数,而无需在每个调用中都使用它们。使用Lodash,从条件调用中有条件地添加/删除参数非常简单。Lodash或Underscores或vanilla JS中使用的确切函数可能会因您的应用程序而异,但我发现检查属性定义的效果很好。下面的函数将仅在传递给函数的parameter变量内传递具有相应属性的参数。
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