【问题标题】:Spring boot mvc. Passing a null request body春季启动MVC。传递空请求正文
【发布时间】:2019-12-14 02:57:03
【问题描述】:

有一个带有@RequestBody TypeA 的restcontroller 映射。

TypeA 已正确解析,即使我将 {} 作为正文发送。 我想要实现的目标是在根本不发送正文时具有相同的逻辑(@RequestBody 为空)。

代码:

@PostMapping('/post')
public ResponseEntity processPost(@RequestBody(required=false) Optional<TypeA> body) {
       return service.someAction(body.orElse(new TypeA());
}

到目前为止,我看到的唯一可能的解决方案是设置 required = false,将类型包装在 Optional 中,然后使用 .orElseGet(...new),这可行,但看起来无效。

有没有合适的方法?

【问题讨论】:

  • 我不明白您想要什么,您能否添加一些示例以及您的期望?
  • 我正在尝试为空请求体和空请求体实现相同的行为
  • 但是你想要的行为不清楚,一些代码会有所帮助
  • 添加了“目前的情况”示例
  • 好的,谢谢but doesn't look valid. - 就我个人而言,我认为唯一的错误是将{}null 视为相同。但如果你真的需要这个,我看不出你的代码有什么问题

标签: java spring-boot jackson jackson-databind


【解决方案1】:

我会这样做:

@PostMapping('/post')
public ResponseEntity processPost(@RequestBody(required=false) TypeA body) {
       return service.someAction(body == null ? new TypeA(): body);
}

【讨论】:

    【解决方案2】:

    你可以试试这个

    @PostMapping('/post')
        public ResponseEntity processPost(@NotNull(message = "you can add null description") @RequestBody TypeA body) {
    
        }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-28
      • 1970-01-01
      • 2015-12-22
      • 2016-09-13
      • 2021-06-10
      • 2014-01-02
      • 1970-01-01
      相关资源
      最近更新 更多