2014-09-25 82 views
0

我在NoSQL數據庫前面製作了一個簡單的REST API,該數據庫將記錄存儲爲與JSON類似的文檔(但不完全相同)。每條記錄都有一些字段,包括數據庫的id,還包括一些派生字段,如dateCreated如何爲JSON API和文檔數據庫建模數據

任何時候我得到任何東西,我想返回的對象與所有的領域。

// GET /users returns an array of these in JSON 
// [{id:"xxx", name:"Bobby", dateCreated:"YYYY-MM-DD"] 
data User = User { id :: String, name :: String, dateCreated :: XXX } 

但是,任何時候我張貼或放置任何東西,他們的客戶應與id場和任何派生領域缺少的發送對象。該數據庫負責當我保存它創建的ID,我會創建一些派生的字段

// POST /users would need you to post only the name. 
// {name:"Henry"} 
data PartialUser = PartialUser { name :: String } 

如果資源表示User類型的對象,我怎麼稱呼的東西客戶端發送給我嗎?你會製作所有派生字段值Maybe值嗎?或者你會創建第二個對象PostedUser什麼的?

回答

1

它可以是許多事情:

  • 請求主體
  • 客戶端
  • 命令DTO其可以發送到域邏輯,以處理的預期資源狀態的表示它由CQRS

我會讓CREATEUSER命令,但是如果你不想使用CQRS和DDD,那麼你很可能把它作爲PartialUserRepresentation,或者你沒有創建DAT一個結構,只需使用屬性來創建一個新的用戶實體。 OFC。如果你使用實體。

所以我會說這取決於你的系統的體系結構。