|
來自亞馬遜的高級工程師James Hood以簡單明了的例子說明了為什么要用DDD替代CRUD來設計REST API。 REST以資源為中心,這些資源以URI的形式呈現(xiàn)。在調(diào)用HTTP時,通過指定一個HTTP動詞和一個資源URI對某個特定的資源進行操作。大部分REST框架都提供了生成器,你只要指定一個資源的名字,框架就會為你生成腳手架(scaffold)。不過,這些生成器默認使用的是CRUD模型(Create、Read、Update、Delete),它們把資源看成是一系列屬性的集合,使用JSON或與特定語言相關的數(shù)據(jù)對象來表示資源,并生成用于對資源進行創(chuàng)建、讀取、更新和刪除操作的方法。 雖然這給開發(fā)者帶來了便利,但我覺得這樣是有問題的。我不喜歡CRUD這樣的說法,尤其不喜歡當中的U。一般的更新操作允許客戶端更新資源的任何一個字段,并使用新版本覆蓋已有的版本。但如果你允許客戶端這么做,那么你的服務API就失去了應有的價值。服務層的一個關鍵價值在于為底層的數(shù)據(jù)增加業(yè)務約束,因此,資源最終都需要帶上業(yè)務約束。 |
|
|