繁体   English   中英

如何在分布式REST服务体系结构中生成HATEOAS链接?

[英]How do you generate HATEOAS links in distributed REST service architectures?

我是REST的新手,现在正在做大量的研究,考虑将内部单片服务架构迁移到更精简和更分散的东西。 我在如何为分布式微服务系统中的资源生成HATEOAS链接时遇到了一些麻烦。 我一般都理解为什么不应该将关系本身存储在数据库中,但另一种方法是在代码中生成它们。

如果微服务的主要好处之一是它们允许不同的团队独立工作以改进他们的服务和API,那么一个团队如何可靠地生成到另一个团队服务资源的链接? 这只是关注您的API中的更改,然后对它们进行适当的版本化,以便其他团队可以随时更新其资源链接吗?

如果是这样,那么硬编码链接真的最好吗? 在我看来,必须有一些最佳实践,如何做到这一点,我只是新的足够的场景,我不能找到正确的搜索条件。

谢谢你的帮助!

我没有机会使用HATEOAS实现REST API,但我有时间思考如何实现它。

我想到的最有趣的方法是为REST API实现一种“DNS服务器”,它基本上构建了系统上可用的不同REST API的URL。

此“DNS”类型服务将公开如下操作:

GET / apis / {resourceTypeIdentifier} / {resourceIdentifier}

这将反过来返回可以消耗资源的URL。

例:

您的API(比如商品API)需要返回对其域外资源的引用(假设客户ID为001)。 要获得外部资源的链接,它将调用DNS api,如下所示:

GET / apis / offer / 001

哪个会从有人可以获取有关该资源的其他信息的地址返回一个网址(例如, https//www.example.org/myofferapi/v3/offers/001https://www.example.org/myofferapi / v3 / offers?offerId = 001 )。 只要此DNS的api以通用方式实现,该服务就可以返回所需的复杂URL。

然后,API所有者有责任使用“DNS”API所需的信息更新“DNS”数据库以构建URL。 这将负责跟踪和更新每个消费者的URL,而不是仅将其放在服务提供者上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM