首页 > 解决方案 > 使用 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);
}

标签: angulartypescriptspring-bootangular-httpclient

解决方案


GET 请求通常没有 HTTP 正文。

更改后端以接受请求参数而不是请求正文似乎是最干净的解决方案。但是,您可以像这样简单地更改它:

@GetMapping(value = "search")
public List<Cat> search(CatDto catDto) {
    return catService.search(catDto);
}

推荐阅读