使用Spring HATEOAS与Spring WebFlux函数式Web框架(reactor-netty)

63
我们能否在 RouterFunction 上使用 Spring 的 HATEOAS?我想我们可以指定资源,但相应的 linkto(Controller.class) 相当于什么呢?还是说是否有相当于指定链接并使用 RouterFunction 组合的等价方法?

4
HATEOAS在Spring Flux Mono响应中的运用本文介绍如何在使用Spring WebFlux和Mono组合时,将HATEOAS链接嵌入到响应中。通过使用WebFlux框架提供的BodyInserter类,我们可以将自定义的JSON格式数据与HATEOAS链接结合起来,并返回给客户端。最终实现了一种优雅而简洁的方式,使得客户端能够轻松地查询和操作相关资源。 - Brian Clozel
1
这个回答解决了你的问题吗?在Spring Flux/Mono响应中使用HATEOAS - diziaq
1
在此处您可以找到有关此主题的问题:https://github.com/spring-projects/spring-hateoas/issues/996 - chrgue
2个回答

1

根据定义,您正在创建自定义路由,而Spring HATEOAS是一个意见领袖的框架集,意味着您无需费心。您尝试做的事情和Spring HATEOAS正在做的事情是矛盾的。因此,如果您想要嵌入超链接,您将不得不手动创建负载。

虽然,如果您在该路由上为特定返回类型设置所有者内容处理程序,则这不应该太困难。


0

2023年1月的答案是:尚未公布

Spring HATEOAS 最初是为 Spring MVC 构建的,因此即使是 WebFluxLinkBuilder 也依赖于控制器注释来构建资源链接。

RouterFunction 接口没有公开底层 RequestPredicate 的方法,因此无法确定哪个路径与给定的 RouterFunction 相关联。未来的 API 可能会引入一些方法,以提供所需的访问信息,而不必像使用 Reflection 那样破坏封装。同时,您可能需要考虑集中所有相关的 RouterFunction 创建(例如通过帮助程序/实用程序/自定义构建器类),以便您可以拦截所有路径和相关的 HandlerFunctions

是的,当您使用 RouterFunctions 时,不幸的是 Spring HATEOAS 不会帮助创建链接,并且基于当前的 WebFlux 函数式 API 可靠地实现此功能具有挑战性。


顺便说一下,最终我通过实现自己的 LinkBuilder 并使用 ApplicationContext 检索 RouterFunction 来完成它,因为显然 Spring HATEOAS 无法直接做到这一点。 - Flavio Costa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接