【问题标题】:What are some methods to document contracts between microservices?有哪些方法可以记录微服务之间的合同?
【发布时间】:2018-12-30 08:01:50
【问题描述】:
在 HTTP 驱动的微服务架构中,每个服务可能有许多公共端点,这些端点将 JSON 返回到客户端或 API 网关中介。这些服务还可以接受具有某种形状的 JSON 主体的 POST,或某种形状的查询字符串等。
有哪些好的选择可以记录或以编程方式跟踪服务之间的这些“合同”?即,如果服务 A 的 /getThing 端点已被重构以返回不同的数据,是否有文档工具或方法有助于更新 API 网关以适应这种变化?
【问题讨论】:
标签:
rest
microservices
distributed
api-design
【解决方案1】:
对于合同的编程管理,如果您使用 spring-cloud 堆栈,那么您必须查看spring-cloud-contract,通过它您可以轻松跟踪您的 Rest 端点的最新版本合同和此外,如果您的 api 端点发生任何更改,这将帮助您通过违反合同和围绕它构建的测试用例失败来通知您。
例如,假设服务 A 的 /getThing 端点已被重构以返回不同的数据,那么所有调用此端点的服务将在您的项目的构建时失败。
但是,这种方法不利于更新 API 网关以适应这种变化,因为您可能希望对每个新版本的端点执行不同的逻辑。
您还可以使用这些端点合约创建 Rest Docs sn-ps。结帐Rest Docs snippets。您还可以使用swagger 来记录您的端点。
对于 NodeJs 检查here。