angular - 带有 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()
我错过了什么?
解决方案
的第二个参数post
是您要在请求中发送的 http 正文。如果没有正文,则传递null
参数。然后将参数作为调用的第三个参数传递。
.post<ServiceResponse>(url, null, { params: params })
具有不同方法签名的原因get
是您不能通过 http get 调用传递 http 正文。
推荐阅读
- flutter - 更改高度后在文本字段中颤动错误的文本位置
- java - 单个表的递归迭代器
- bash - 为什么我要在 shell 脚本中使用 declare / typeset 而不仅仅是 X=y?
- python - 如何在 Keras 中使用多 GPU 与共享权重应用程序模型
- python - 为什么我运行 PyQt5 程序时第一个按钮是蓝色的?
- python - 如何在 python 中选择性地进行深度复制?
- vba - 使用 VBA 将扫描值(从条形码扫描仪)移动到 excel 中的特定单元格
- spring - Spring Cloud slueth SpanAccessor 接口
- excel - 使用该范围内单元格的内容在活动范围内添加公式
- html - 单击表格行发生冲突