假设我有一个parent
代表一组数据的资源。像这样的宁静 URL 结构应该非常简单:
- GET /api/parents - 返回所有父母的集合
- GET /api/parents/1 - 返回 id = 1 的父级
- POST /api/parents - 向集合添加新的父级
- PUT /api/parents/1 - 更新 id = 1 的父项中的数据
- DELETE /api/parents/1 - 删除 id = 1 的父级
现在说每个parent
都是由child
资源的集合组成的。子资源 id 是否应该被视为具有全局或本地范围?我相信给出了以下 2 个 URL:
- GET /api/parents/1/children - 返回父 1 的孩子的集合
- POST /api/parents/1/children - 将新子添加到父 1 的集合
但是 GET、PUT 和 DELETE 呢?以下哪项是合适的?
- 获取、放置或删除 /api/parents/44/children/6
- 获取、放置或删除 /api/parents/children/6
似乎它归结为child
资源 ID 的唯一性范围。ID 是否仅在父聚合中唯一?还是在所有父母的所有孩子中都是独一无二的?一个比另一个更正确,还是取决于相关资源的 id 唯一性范围?
如果示例 1 比示例 2 更合适,并且 id = 44 的父级没有 id = 6 的子级(例如子级 id = 6 属于 id = 9 的父级),应该返回什么 HTTP 响应?