angular - 使用 HttpParams 以角度发送获取请求
问题描述
这是我后端的 GET 映射:
@GetMapping(value = "search")
public List<Cat> search(@RequestBody CatDto catDto) {
return catService.search(catDto);
}
我想发送一个 GET 请求以获取 Angular 中的列表HttpClient
。我知道我不能用我的 GET 请求发送请求正文,我在我的component.ts
:
search(cat: Cat): Observable<Cat[]> {
let params = new HttpParams();
params = params.append('name', cat.name);
params = params.append('rating', (cat.rating).toString());
params = params.append('birtday', (cat.birthday).toLocaleDateString());
return this.httpClient.get<Cat[]>(this.messageBaseUri+'/search', {responseType: 'json', params});
}
我当然得到:
Required request body is missing
从我的后端。我可以在不更改后端的情况下以某种方式执行此操作,还是必须使后端端点看起来像这样:
@GetMapping(value = "search")
public List<Cat> search(@RequestParam String name,
@RequestParam Integer rating,
@RequestParam Date birthday) {
return catService.search(name, rating, birthday);
}
解决方案
GET 请求通常没有 HTTP 正文。
更改后端以接受请求参数而不是请求正文似乎是最干净的解决方案。但是,您可以像这样简单地更改它:
@GetMapping(value = "search")
public List<Cat> search(CatDto catDto) {
return catService.search(catDto);
}
推荐阅读
- node.js - 错误 TS2304:找不到名称“需要”。梅尔卡多帕戈
- python - 如何根据 HTML 中的用户表单输入路由 Flask url?
- c# - 在 ASP.NET Core 中配置 return_type 字段
- html - Bootstrap 4 导航栏汉堡无法正确显示,它在移动设备上位于屏幕的一侧
- sql - 如何优化此 SQL Server 查询 - 多个子查询
- c++ - 重载插入运算符
- javascript - 在 useEffect 组件中指定依赖项
- java - RichCoFlatMapFunction 中的不完整/不一致状态
- python - 接收 'KeyError:1' ,为什么会发生这种情况,我该如何解决?
- azure - 用于将数据从 Cosmosdb 推送到 CRM 并执行更新的逻辑应用