Angular параметры запроса, такие как httpd_query_params - PullRequest
2 голосов
/ 08 января 2020

В настоящее время я использую API с функциональными тестами. Так что я знаю, что у меня будет хороший ответ с URL ниже:

/api/v1/investisseurs?vehicule%5B0%5D=4

Эквивалентный декодированный URL

/api/v1/investisseurs?vehicule[0]=4

Использование Angular для отправки моего вызова с HttpParams как follow

getInvestors(params: HttpParams): Promise<MelodiiaCollectionResponse> {
    console.log(params);
    return <Promise<MelodiiaCollectionResponse>>this.http.get(environment.httpdBackHost + '/investisseurs', {
       params: params,
}).toPromise();

Этот результат со следующим запросом в моем браузере

/api/v1/investisseurs?vehicule%5B%5D=%5B%222%22%5D&page=1&max_per_page=15

Эквивалентный декодированный URL

/api/v1/investisseurs?vehicule[]=["2"]&page=1&max_per_page=15

Вопрос, как можно получить тот же кодирование параметра запроса как php метод http_build_query в пределах Angular 7?

Я бы сам не хотел переопределять колесо:)

Заранее благодарен за помощь

1 Ответ

2 голосов
/ 08 января 2020

Вы можете использовать HttpParams builder для автоматического разбора ваших параметров с помощью метода append . А с некоторыми редукторами вы можете предоставить значения массива в вашем httpParams

import { HttpParams } from '@angular/common/http';

//Whatever...

getInvestors(vehicules: number[], page: number, maxPerPage: number): Promise<MelodiiaCollectionResponse> {
  const params = vehicules.reduce(
    (previous, vehicule, index) => previous.append(`vehicule[${index}]`, vehicule.toString()),
     new HttpParams()
   )
   .append('max_per_page', maxPerPage.toString())
   .append('page', page.toString())
  return this.http.get<MelodiiaCollectionResponse>(`${environment.httpdBackHost}/investisseurs`, {
     params,
  }).toPromise();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...