【发布时间】:2014-11-23 04:59:05
【问题描述】:
假设我有一个资源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 呢?以下哪项是合适的?
- GET、PUT 或 DELETE /api/parents/44/children/6
- GET、PUT 或 DELETE /api/parents/children/6
这似乎归结为 child 资源 ID 的唯一性范围。 ID 是否仅在父聚合中唯一?还是在所有父母的所有孩子中都是独一无二的?一个比另一个更正确,还是取决于相关资源的 id 唯一性范围?
如果示例 1 比示例 2 更合适,并且 id = 44 的父代没有 id = 6 的子代(比如子代 id = 6 属于 id = 9 的父代),应该返回什么 HTTP 响应?
【问题讨论】:
标签: http rest asp.net-web-api url-routing