【问题标题】:String Hateoas link to a void method字符串 Hateoas 链接到 void 方法
【发布时间】:2016-12-07 12:17:57
【问题描述】:

我正在为 HTTP 响应中的 HAL 标准使用 Spring Hateoas。我的控制器中有一个 HTTP DELETE 方法,它什么都不返回(void)。在对同一实体的响应中,我想提供一个链接来删除资源。我尝试使用以下代码,但它给出了错误

无法解析方法linkTo(void)

    resource.add(linkTo(
            methodOn(DokumenteController.class)
                    .loeschenEinDokument(filenetDokumentZuordnung.getDokumentId()))
                            .withRel("download"));

有什么方法可以将链接添加到返回 void 的方法?

【问题讨论】:

标签: spring hateoas spring-hateoas hal


【解决方案1】:

不要返回void。改为返回ResponseEntity<Void>

有可能,您无论如何都必须设置一些标头,即使您不返回消息正文也是如此。或者你想设置一个状态码。

如果您的控制器具有适当的请求映射,您还可以执行以下操作:

 resource.add(linkTo(DokumenteController.class)
             .slash(filenetDokumentZuordnung.getDokumentId())
             .withRel("download"));

【讨论】:

  • 可能值得重新格式化响应以强调这里有两个答案,我发现第二个更适合我的情况。
【解决方案2】:

我怀疑是否可以链接到 DELETE 路由。

Hateoas 允许您发现您的 REST API,但 REST API 意味着要删除位于 /document/42 的文档,您应该调用相同的路由,但使用 DELETE 方法。

基本上,您不必为删除方法创建链接,因为这暗示着这是删除文档的方法。

【讨论】:

  • 为每个 CRUD 操作提供单独的链接以向客户端提供有关是否允许特定操作的信息是有意义的。如果客户端收到关系名称为“deleteDocument”的href,则允许删除。如果不是,则不允许。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-10
  • 2014-02-12
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2019-01-14
  • 1970-01-01
相关资源
最近更新 更多