1 回答

TA貢獻1799條經(jīng)驗 獲得超6個贊
感謝這個問題。是的,Spring Cloud Contract 可以是消費者驅(qū)動的,也可以是生產(chǎn)者驅(qū)動的。
合同定義可以放在生產(chǎn)者那里,也可以放在外部存儲庫中。消費者驅(qū)動的概念與存儲合約的事實無關(guān)。這與創(chuàng)建合同的人或?qū)嶋H推動合同變更的人有關(guān)。另一件事是每個消費者是否可以定義一套自己的需求。這意味著一個消費者可能有與另一個消費者不同的需求。
因此,在生產(chǎn)者驅(qū)動方法的 Spring Cloud Contract 中,生產(chǎn)者只是創(chuàng)建合同,并不真正關(guān)心不同的消費者是否以不同的方式使用他們的 API。API 的生產(chǎn)者為所有消費者創(chuàng)建了例如 1 個合同定義,而與該合同保持一致是消費者的問題。
使用 Spring Cloud Contract 的消費者驅(qū)動合同,是消費者提出更改建議并創(chuàng)建合同定義。消費者將 PR 發(fā)送到生產(chǎn)者團隊的倉庫或存儲所有合約定義的單獨倉庫。做這件事的不是生產(chǎn)者,而是消費者。與此同時,消費者可以在不征得生產(chǎn)者許可的情況下在本地創(chuàng)建存根,并對 API 進行原型設(shè)計。一旦消費者完成了它的工作并且當(dāng)然之前與生產(chǎn)者團隊討論了更改,那么可以發(fā)送帶有建議更改的拉取請求。要記住的重要一點是,每個消費者都有自己的文件夾和他們的要求。例如,如果有消費者example1
,并且example2
有生產(chǎn)者,producer1
那么在producer1
合約文件夾會有2個文件夾,一個example1
和第二個example2
。兩者都包含對特定消費者的期望。
然后生產(chǎn)者接管 PR 并在生產(chǎn)者端進行驗證。生成測試。一旦實現(xiàn)被編寫并且測試通過,就可以上傳存根。
最后,在消費者端,消費者可以切換到開始獲取上傳的存根,以始終獲得最新版本的存根。
添加回答
舉報