首页 > 解决方案 > 带有 HttpParams 的 HttpClient POST

问题描述

我正在尝试 POST 到需要参数作为查询字符串参数而不是通过 POST 正文传递的端点。

const params = new HttpParams()
  .set('param1', '1')
  .set('param2', '2');

const url = environment.apiUrl + 'Service/Endpoint';

return this
  .httpClient
  .post<ServiceResponse>(url, { params })
  .pipe(map(res => res.httpStatusCodeSuccess));

这将返回 404,因为调用不包含任何查询字符串参数。我通过查看网络调用验证了这一点。

如果我正在使用但不适用于 POST 端点,则相同的代码确实适用于我的 GET 请求。.get().post()

我错过了什么?

标签: angulartypescriptangular-httpclient

解决方案


的第二个参数post是您要在请求中发送的 http 正文。如果没有正文,则传递null参数。然后将参数作为调用的第三个参数传递。

  .post<ServiceResponse>(url, null, { params: params })

具有不同方法签名的原因get是您不能通过 http get 调用传递 http 正文。


推荐阅读