在HTTP驱动的微服务体系结构中,每个服务可能都有许多公共端点,这些公共端点返回JSON,例如,返回到客户端或API网关中介。这些服务还可以接受具有特定形状的JSON正文的POST,或接受具有特定形状的查询字符串等。
对于记录或以编程方式跟踪服务之间的这些“合同”,有什么好的选择?也就是说,如果服务A的/getThing
端点已经重构为返回不同的数据,是否有文档工具或方法论可以促进更新API网关以适应这种变化?
答案 0 :(得分:2)
要以编程方式管理合同,如果您使用Spring-cloud堆栈,则必须研究spring-cloud-contract,通过它您可以轻松跟踪剩余合同的最新版本端点,并且如果您的api端点发生任何更改,这也会帮助您通过解除合同并在围绕它的测试用例构建失败的情况下进行通知。
例如,假设服务A的/getThing
端点已经重构为返回不同的数据,那么在您的项目的构建时间中,对该端点的所有调用服务都将失败。
但是,这种方法无法促进API网关的更新以适应此更改,因为您可能希望对端点的每个新版本执行不同的逻辑。
您还可以使用这些终结点合同来创建Rest Docs代码片段。结帐Rest Docs snippets。您还可以使用swagger记录端点。
对于NodeJ,检查here。