【问题标题】:Spring Data ReST ref link omission when null or empty空或空时Spring Data ReST ref链接遗漏
【发布时间】:2014-07-01 09:54:35
【问题描述】:

我一直在搜索文档和Restbucks implementation by Oliver,但我似乎无法在生成的 Spring REST 存储库资源上配置链接。 (我可以添加它们,但不能通过 ResourceProcessor 删除它们,因为处理器在转换之前被调用)

我的情况很简单,我希望省略指向 null 或空集合的对象上的 rel 链接(例如,在图形节点父/子结构的情况下)

有人会鼓励我如何实现这一目标吗?理想情况下,我希望在 Restbucks README 中提出一些建议(但我找不到它使用),其中将拾取自定义 RestResourceEntityLinks 扩展并从所述实现生成链接,因为我的情况适用于所有域对象。

但也许我还没有遇到更简单的方法?或者也许让这些链接指向一个空数组或 null 是一个有效的 hatoas ref,所以我应该让它继续前进?

提前致谢

【问题讨论】:

    标签: spring rest spring-hateoas


    【解决方案1】:

    一般来说,您应该能够通过调用Resource.getLinks() 来删除链接,并与返回的List 混淆。如果您认为 Resource.removeLink(String rel) 有意义,请随时为此创建票证。

    但是,我认为指向空资源的链接是有道理的,因为链接的存在在告诉客户存在可以与之交互的相关资源方面起着重要作用。换句话说:如果链接不可用,客户端如何找到分配相关资源或将元素添加到当前空集合的可能性。

    链接不仅代表资源的当前状态,而且代表客户端下一步应该/可以做什么。以 RESTBucks 项目中的payment link 为例。仅在尚未付款的情况下才存在。完成后,链接甚至会消失。这实际上与您的目标相反:)。

    【讨论】:

    • 谢谢奥利弗,很高兴能直接从马口中听到。我不认为有 removeLink 是必要的,因为您可以使用您提到的列表参考修改链接。我认为在我的情况下,删除链接可能类似​​于支付链接场景(因为根父节点不应显示父引用)。我确实尝试了您在 ResourceProcessor 中的建议,但由于此时似乎还没有生成链接(对于引用的实体),我无法删除它们。您是否建议在控制器级别进行此过程?感谢您的快速回复
    • 在构建了一个使用 ReSTful API 的应用程序之后,我现在明白你的意思是关于删除指向空资源的链接如何没有意义,因为仍然需要识别 rel保留(因此发现空值是有效的)
    猜你喜欢
    • 1970-01-01
    • 2014-07-31
    • 2016-08-20
    • 2015-01-21
    • 2016-05-23
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 2016-12-07
    相关资源
    最近更新 更多