角度http get在请求中将主体参数作为json发送

Dom*_*rtl 5 httpclient angular

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

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"]
}'
Run Code Online (Sandbox Code Playgroud)

这是我的角度代码,不幸的是参数没有设置(后端没有收到 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
});
Run Code Online (Sandbox Code Playgroud)

Dav*_*vid 5

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

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

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