2015-10-12 57 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