1 回答
TA贡献1799条经验 获得超6个赞
感谢这个问题。是的,Spring Cloud Contract 可以是消费者驱动的,也可以是生产者驱动的。
合同定义可以放在生产者那里,也可以放在外部存储库中。消费者驱动的概念与存储合约的事实无关。这与创建合同的人或实际推动合同变更的人有关。另一件事是每个消费者是否可以定义一套自己的需求。这意味着一个消费者可能有与另一个消费者不同的需求。
因此,在生产者驱动方法的 Spring Cloud Contract 中,生产者只是创建合同,并不真正关心不同的消费者是否以不同的方式使用他们的 API。API 的生产者为所有消费者创建了例如 1 个合同定义,而与该合同保持一致是消费者的问题。
使用 Spring Cloud Contract 的消费者驱动合同,是消费者提出更改建议并创建合同定义。消费者将 PR 发送到生产者团队的仓库或存储所有合约定义的单独仓库。做这件事的不是生产者,而是消费者。与此同时,消费者可以在不征得生产者许可的情况下在本地创建存根,并对 API 进行原型设计。一旦消费者完成了它的工作并且当然之前与生产者团队讨论了更改,那么可以发送带有建议更改的拉取请求。要记住的重要一点是,每个消费者都有自己的文件夹和他们的要求。例如,如果有消费者example1
,并且example2
有生产者,producer1
那么在producer1
合约文件夹会有2个文件夹,一个example1
和第二个example2
。两者都包含对特定消费者的期望。
然后生产者接管 PR 并在生产者端进行验证。生成测试。一旦实现被编写并且测试通过,就可以上传存根。
最后,在消费者端,消费者可以切换到开始获取上传的存根,以始终获得最新版本的存根。
添加回答
举报