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 并在生產者端進行驗證。生成測試。一旦實現被編寫并且測試通過,就可以上傳存根。
最后,在消費者端,消費者可以切換到開始獲取上傳的存根,以始終獲得最新版本的存根。
添加回答
舉報