【发布时间】:2015-01-07 10:00:36
【问题描述】:
我有许多使用 Spring Boot 构建的微服务,所以为了找点乐子,我想我应该尝试向它们添加 HATEOAS 以帮助建立跨资源链接。它似乎在特定项目中工作得很好,但我想知道是否有一种跨 API 链接的好方法。例如,假设我有 3 个服务:
用户详细信息服务: 代码:
/users/{userid}
用户日历服务: 代码:
/users/{userid}/appointments
/users/{userid}/appointments/{appointmentid}
用户消息服务: 代码:
/users/{userid}/messages
/users/{userid}/messages/{messageid}
要通过 API 进行浏览,最好有从用户资源到其约会和消息的链接。同样,最好从这些资源中获得链接。当我在类路径上拥有一个包含所有内容的 API 时,这一切都是可以实现的,我可以在其中编写如下代码:
代码:
user.add(linkTo(methodOn(CalendarController.class).appointments(user.getKey())).withRel("appointments"))
但是,如果 CalendarController 不在我当前访问的服务的类路径上,我将无法执行此操作。
是否有一个好的/推荐的方法来创建当前项目中没有的控制器的链接?
【问题讨论】:
-
我们有完全相同的问题。我们已经考虑过使用一个 JAR 来定义路径并共享它以及公开路径的资源并让 API 相互通信。这两种解决方案都有缺点。迫不及待想看到有关此的任何答案
-
这里也一样。我们正在考虑开发我们自己的 DSL 来构建和共享链接。在我们的用例中,这些链接将被共享给一个 zookeeper 节点,然后服务可以请求指向其他资源的链接。如果 Spring HATEOAS 现在或不久的将来提供解决方案,那么最终沿着这条路走下去会很好。
-
我想我们问的是同一件事。 stackoverflow.com/questions/27790905/…
标签: spring spring-boot hateoas spring-hateoas microservices