【问题标题】:ResponseEntity returning an OptionalResponseEntity 返回一个 Optional
【发布时间】:2022-01-06 13:33:57
【问题描述】:

有人告诉我应该在我的控制器中重构这个方法的返回类型,这样它就不会返回一个通用的>:

@GetMapping(value = "/{id}")
    public ResponseEntity<?> getById(@PathVariable Long id) {
        return myService.getById(id).map(ResponseEntity::ok).orElse(new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR));
    }

myService.getById 返回Optional&lt;DestinyDTO&gt;,我对返回ResponseEntity&lt;Optional&lt;DestinyDTO&gt;&gt; 是否正确感到困惑。如果是这样,我如何替换 &lt;?&gt; 返回类型以匹配我的服务方法 getById 中的实际返回类型。

希望我能解释一下自己。任何帮助表示赞赏

【问题讨论】:

    标签: java controller optional


    【解决方案1】:

    您可以返回ResponseEntity&lt;DestinyDTO&gt;

    【讨论】:

      【解决方案2】:

      您的实体的回应应该更加明确。

      如果您的响应实体类似于 ResponseEntity&lt;?&gt;,则您声明可以返回任何类型的数据。

      但是,如果您返回类似 ResponseEntity&lt;User&gt; 的内容,则表示您的响应具有显式数据,这很有帮助,因为您指定您的实体将响应任何使用您的 API 的人,如果您使用 Swagger,它将被明确记录,而不是简单的?。

      【讨论】:

      • 我想你说“像这样ResponseEntity&lt;?&gt;你可以返回任何类型的数据”你可能的意思是“像这样ResponseEntity&lt;?&gt;你可以返回任何ResponseEntity数据类型”——如果是这样,你能edit你的答案澄清吗?谢谢。
      猜你喜欢
      • 1970-01-01
      • 2020-05-23
      • 2020-01-14
      • 1970-01-01
      • 2018-09-15
      • 2021-10-09
      • 2019-11-03
      • 1970-01-01
      • 2017-03-13
      相关资源
      最近更新 更多