RESTful API - 不同类型的子资源

时间:2015-10-12 14:49:49

标签: rest restful-url restful-architecture

我正在处理树状结构资源。每个item资源都有children。每个child类型可以是content资源或subject资源 - 由type_id确定。 (未来可能会有更多的儿童类型)。

应该使用什么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创建层次结构连接。

谢谢!

1 个答案:

答案 0 :(得分:4)

如果您的孩子有一个名为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