如何解决带有 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,因为调用不包含任何查询字符串参数。我已经通过查看网络调用验证了这一点。
如果我使用 .get()
但不适用于 POST 端点的 .post()
,则相同的代码确实适用于我的 GET 请求。
我错过了什么?
解决方法
post
的第二个参数是您要在请求中发送的 http 正文。如果没有正文,则为参数传递 null
。然后将参数作为调用的第三个参数传递。
.post<ServiceResponse>(url,null,{ params: params })
get
具有不同方法签名的原因是您无法通过 http get 调用传递 http 正文。
我认为这是因为您将参数作为对象传递。
参考下面的例子
const myheader = new HttpHeaders().set('Content-Type','application/x-www-form-urlencoded')
let body = new HttpParams();
body = body.set('用户名',用户名);
body = body.set('password',PASSWORD);
http .post('/api',正文,{ 标题:myheader), })
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。