2015-10-12 63 views
2

我正在處理樹結構資源。每item資源有children。每個child類型可能是content資源或subject資源 - 這由type_id確定。 (未來可能會有更多的兒童類型)。RESTful API - 不同類型的子資源

什麼URI應該用於創建一個項目的新孩子?

POST /api/items/<item_id>/children 

(經由JSON遞送type_id

OR:

POST /api/items/<item_id>/children/contents 
POST /api/items/<item_id>/children/subjects 

OR:根據重定向的type_id到:

POST /api/contents 
POST /api/subjects 

,然後使用的GUID用於創建層次結構連接的新資源。

謝謝!

回答

3

如果您的孩子有一個屬性命名type可以是subjectscontents,你可以把它看成任何其他屬性,如可以是男性或女性的性別。

理想情況下,你會創建一個新的孩子

POST /api/items/<item_id>/children 

{ 
    "some_value": 50 
    "type": "subject", 
} 

POST /api/items/<item_id>/children 

{ 
    "some_value": 134 
    "type": "content", 
} 

沒有必要做一個混亂的終點爲一個簡單的屬性。如果您爲type屬性執行此操作,那麼您也可以爲所有其他屬性執行此操作,從而導致許多端點指向基本相同的資源,這不是您想要的。

以後可以按類型獲取它們,例如讓所有科目將

GET /api/items/<item_id>/children?type=subject