首页 > 解决方案 > angular http get 在请求中将正文参数作为 json 发送

问题描述

我正在尝试以角度提出这个请求:

curl --location --request GET 'http://localhost:5000/location/searchDistanceAndTags?pageNo=1&size=1' \
--header 'token: $IKFASOmV#*+JIL4X0FGTDZNRPB3GN7HvAB9QD2X8QWeLsqtKW1U5YHnxCMRywEbUZlu??oz!!!!6r' \
--header 'Content-Type: application/json' \
--data-raw '{
"lat": "38.8993487",
"lng": "-77.0145665",
"radius": "100",
"tags": ["bier"]
}'

这是我的角度代码,不幸的是没有设置参数(后端在req.body中没有收到任何数据)

 const dataset = {
  lat: '38.8993487',
  lng: '-77.0145665',
  radius: '100',
  tags: ['bier']
};

return this._httpClient.get<any>(`http://localhost:5000/location/searchDistanceAndTags?pageNo=${this.pageNumber}&size=10`, {
  headers: {token: this.apikey,
    'Content-Type':  'application/json'},
  params: dataset
});

标签: angularhttpclient

解决方案


尽管 GET 请求在技术上可以有一个像这个SO answer中所示的主体,但实际上支持它的库并不多。正如您所指出的,CURL 确实如此。但是,像 fetch、Xhr (XmlHttpRequest) 这样的前端 API 不允许在 GET 请求中发送正文。

HttpClient如果我没记错的话,Angular使用 Xhr,所以你不会被允许这样做。

您可以修改您的 API 以接受发布请求,或者接受查询字符串中的参数


推荐阅读