将请求参数/路径变量映射到 Spring 中 GET 请求中的 Dto



我想创建一个将返回Page对象的控制器。我需要页码Pageable及其大小(不能大于 50(以及一些将成为搜索条件的变量。如果这是一个 POST 请求,它可能如下所示:

public Page<SomeDto) getDto(@RequestBody @Valid RequestDto requestDto, Page pageRequest)

但是,这是一个 GET 请求,因此不能/不应该使用@RequestBody。 此外,我希望有一些类似于@Valid的东西,以便 Spring 会自动拒绝错误的请求。

我想知道是否:

  1. 有可能,如果是这样,如何实现这一点,并且已经从 URL(@PathVariable 或 @RequestParam(获取的值创建了 Dto,就好像它是将正文映射到对象的 POST 请求一样。

我想避免使用某种代码:

public String updateFoos(@RequestParam Map<String,String> allParams) {}

  1. 如果 1st 中描述的内容是不可能的,那么最接近满足这些要求的解决方案是什么?

无论使用哪种 HTTP 方法,您都可以为每个 HTTP 请求提供一个 HTTP 正文(因此也可以有一个@RequestBody(。但是,对GET请求使用HTTP正文并不是一个好的REST API设计(参见 https://martinfowler.com/articles/richardsonMaturityModel.html(

您可以使用@PathVariable或@RequestParam参数进行 bean 验证,您只需要将所需的注释放在这些注释旁边即可

相关内容

  • 没有找到相关文章