【问题标题】:Is it possible to do Hypermedia Driven RESTFul service in a microservices world?是否可以在微服务世界中提供超媒体驱动的 RESTFul 服务?
【发布时间】:2017-05-01 16:40:42
【问题描述】:

假设我们正在创建一个票务处理系统。假设在这个域中有两个不同的有界上下文。 取消票证 换票

据我了解,这两者可以是两个不同的微服务,无需相互了解。取消服务的票证可能与更改服务的票证完全不同。

从 REST API 设计的角度来看,我已经阅读了很多关于使用超媒体并通过将相关操作作为链接包含在 REST 响应 (Stefan Tilkov's Talk) 中来让客户端发现资源的内容。如果这是真的,当我的更改服务返回响应时,包含指向取消服务的链接是有意义的,客户端可以使用该链接执行取消。当 Cancel 和 Change 是两个不同的微服务,它们彼此不知道时,我该如何实现呢?还是我的限界上下文错了?

在使用微服务时,我们是否会失去这些超媒体链接功能(或者变得更难)?

谢谢 凯

【问题讨论】:

    标签: microservices restful-architecture hypermedia


    【解决方案1】:

    在 HATEOAS 中,URI 是可发现的(并且没有记录),因此可以更改它们。也就是说,除非它们是您系统的切入点(Cool URIs,唯一可以由客户端硬编码的切入点) - 如果您想要进化其余部分的能力,您不应该拥有太多的切入点未来系统的 URI 结构。这实际上是 REST 最useful 的特性之一。

    对于剩余的非酷 URI,它们可以随着时间的推移而更改,并且您的 API 文档应该说明它们应该在运行时通过超媒体遍历发现的事实。

    话虽如此,在您的场景中,该链接将是一个酷 URI,与当前 API 无关(因为它可能驻留在不同的机器/域等上)。除非您使用 discovery tool,否则您将不得不对该链接进行硬编码,从而失去可发现性的好处。

    【讨论】:

      猜你喜欢
      • 2016-10-26
      • 2021-04-17
      • 2018-11-12
      • 2017-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-20
      • 1970-01-01
      相关资源
      最近更新 更多