Параметры HTTP-запроса - PullRequest
       22

Параметры HTTP-запроса

0 голосов
/ 10 июля 2019

Если у меня есть массив объекта, в котором я храню все поисковые фильтры, выбранные пользователем, и вот его структура:

export const filterDataObject = [{
    date: '',
    tid: '',
    className: '',
    userName: '',
    category: [],
    limit: '50',
    sort: 'acs'
}];

вызов REST должен быть, например, таким:

   http://localhost:1234/api/query? 
_filter=tid%3Dcdfg&_limit=50&_sort=asc

пока _filter собирает все параметры, но ограничивает и сортирует

Как я могу передать массив результатов в виде параметров в мой запрос покоя httpClient, особенно в массив категорий?

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Я предполагаю, что вы хотите отправить только один фильтр в ваш API, а не массив, а также что вы используете angular 4 +

Вариант № 1

this.http.get('http://localhost:1234/api/query', {params: filterDataObject[0]})...

Вариант № 2

Вы можете использовать HttpParams

import {HttpParams} from '@angular/common/http';
//...
let params = new HttpParams();

for(let key of Object.keys(filterDataObject[0])){
    params= params.set(key, filterDataObject[0][key]) ;
}

this.http.get('http://localhost:1234/api/query', {params: params})...

Вариант № 3

Вы также можете попробовать использовать URLSearchParams (если вам не нужна поддержка IE).

let sp = new URLSearchParams();

for(let key of Object.keys(filterDataObject[0])){
    sp.set(key, filterDataObject[0][key]) 
}

const url = `http://localhost:1234/api/query?${sp.toString()}`;
this.http.get(url)...
0 голосов
/ 10 июля 2019

Добавление данных в URLSearchParams

const params = new URLSearchParams();
    params.set('sort', val);
    params.set('tid', val);
    params.set('limit', val);
    params.set('sort', val);

    const options = new RequestOptions({
      headers: this.getAuthorizedHeaders(),
      responseType: ResponseContentType.Json,
      params: params,
      withCredentials: false
    });

    console.log('Options: ' + JSON.stringify(options));

    return this.http.post(this.BASE_URL, data, options)
      .map(this.handleData)
      .catch(this.handleError);
...