Угловые 4 Параметры Запроса С Помощью HttpClient
Я искал способ передать параметры запроса в вызов API с новым HttpClientModule
' s HttpClient
и еще предстоит найти решение. Со старым вы бы написали что-то вроде этого.
getNamespaceLogs(logNamespace) {
// Setup log namespace query parameter
let params = new URLSearchParams();
params.set('logNamespace', logNamespace);
this._Http.get(`${API_URL}/api/v1/data/logs`, { search: params })
}
это приведет к вызову API по следующему URL:
localhost:3001/api/v1/data/logs?logNamespace=somelogsnamespace
HttpClient
get()
метод не имеет search
свойство, поэтому мне интересно, где передать параметры запроса?7 ответов:
Вы можете (в версии 5+) использовать fromObject и fromString параметры конструктора при создании HttpParamaters, чтобы сделать вещи немного проще
const params = new HttpParams({ fromObject: { param1: 'value1', param2: 'value2', } }); // http://localhost:3000/test?param1=value1¶m2=value2
или:
const params = new HttpParams({ fromString: `param1=${var1}¶m2=${var2}` }); //http://localhost:3000/test?paramvalue1=1¶m2=value2
более краткое решение:
this._Http.get(`${API_URL}/api/v1/data/logs`, { params: { logNamespace: logNamespace } })
вы можете передать это так
let param: any = {'userId': 2}; this.http.get(
${ApiUrl}, {params: param})
joshrathke прав.
In angular.io docs сказано, что URLSearchParams от @angular / http является устаревшим. Вместо этого вы должны использовать HttpParams от @angular / common / http. Код довольно похож и идентичен тому, что написал йошратке. Для нескольких параметров, которые сохраняются, например, в объекте типа
{ firstParam: value1, secondParam, value2 }
вы также можете сделать
for(let property in objectStoresParams) { if(objectStoresParams.hasOwnProperty(property) { params = params.append(property, objectStoresParams[property]); } }
Если вам нужны унаследованные свойства, то удалите свойство hasOwnProperty соответственно.