Angular HttpClient использует URL-параметры в POST - PullRequest
0 голосов
/ 17 января 2019

сегодня я попытался отправить пост-запрос, который выглядит так. http://host/start?time=123456789 используя следующий код:

    const url = `/start`;
    const myParams = new HttpParams().set('time', toTimestamp(time).toString());
    return this.http.post(url, { headers: this.getHttpHeaders(), params: myParams }));

Однако запрос был отправлен без параметра http://host/start. Параметр был отправлен внутри тела запроса. API не принимает это, и мне не разрешено изменять API. Как я могу изменить свой код, чтобы включить параметр в URL?

Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Как уже упоминал Sanyam, почтовый запрос выглядит как ...

http.post(url, data, httpOptions)

Итак, в вашем запросе вы пропускаете фактическую часть тела ... так как это запрос POST. Поскольку у вас нет контроля над API, вы можете добавить null для части body.

return this.http.post(url, null, { headers: this.getHttpHeaders(), params: myParams }));
0 голосов
/ 17 января 2019

Когда вы делаете

return this.http.post(url, { headers: this.getHttpHeaders(), params: myParams }));

Вы отправляете параметры в теле запроса, что и ожидается здесь

  1. GET отправляет данные в URL на сервер для получения данных из ресурса
  2. POST отправляет параметры в теле на сервер для обновления / создания Ресурс

Выполните этот запрос в вашем запросе:

 http.post(url, data, httpOptions)
...