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

标签 java spring validation

我想创建一个将返回 Page 对象的 Controller 。我需要页面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 条中描述的内容不可能实现,那么什么解决方案最能满足这些要求?
  • 最佳答案

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

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

    关于java - 在 Spring 中将请求参数/路径变量映射到 GET 请求中的 Dto,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62288482/

    相关文章:

    javascript - Angular 模糊验证阻止提交单独的表单

    java - 验证输入的设计模式?

    java - Hibernate 验证——与其他对象比较

    java - XML 和 Java @Configuration 中可以有相同的 Bean 定义吗?

    java - 在 Java 7 中,列出带有 "relative path"的文件

    java - 如何在失败时打印验证错误

    spring - 如何在没有 web.xml 的情况下在 Java Config 中定义 Spring 3.2 Async Servlet-Filter

    java - restdocs SnippetException 由于来自 spring-data-rest 的 HAL "_links"元素

    java - JLabel 和 JButton setPreferredSize 无法正常工作

    java - 禁用 Materialise 框架 "Responsiveness"