angular - 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
});
解决方案
尽管 GET 请求在技术上可以有一个像这个SO answer中所示的主体,但实际上支持它的库并不多。正如您所指出的,CURL 确实如此。但是,像 fetch、Xhr (XmlHttpRequest) 这样的前端 API 不允许在 GET 请求中发送正文。
HttpClient
如果我没记错的话,Angular使用 Xhr,所以你不会被允许这样做。
您可以修改您的 API 以接受发布请求,或者接受查询字符串中的参数
推荐阅读
- python - 计算具有非唯一日期索引的数据帧的滚动中位数
- html - 显示:内联块在引导程序中不起作用
- blazor - Blazor 中的自定义表单验证
- visual-studio-code - 如何防止 VSCode 折叠超过相同的缩进级别
- javascript - 获取 VueJS 中当前 div 的 ID
- lua - 带有函数参数并传递 nil 的 LUA 表
- r - 将 geom_density_ridges 与对数刻度一起使用
- javascript - javascript 运算符 ":!0" - 在这个赋值语句中是什么意思?
- mongodb - 在 mongodb 集合中获取最新值的问题
- javascript - Iphone/iOS Web 浏览器调试