【发布时间】:2011-10-20 09:07:53
【问题描述】:
我已经仔细阅读了有关此问题的问题,但我仍然没有明确的答案。
我有一个应用程序,想构建一个 RESTful API 来公开信息子集。我有三个资源:
- 用户
- 报告
- 照片
用户有报告,报告有照片。照片不能存在于报告之外,报告也不能存在于用户之外。
我根据自己的要求设计了以下网址
用户登录,服务器以令牌响应,令牌在所有 API 调用的标头中发送
GET example.com/api/
获取用户信息
GET example.com/api/users/{username}
获取所有用户报告
GET example.com/api/users/{username}/reports
获取报告的所有照片
GET example.com/api/users/{username}/reports/{report_id}/photos
添加照片
POST example.com/api/users/{username}/reports/{report_id}/photos
删除照片
DELETE example.com/api/users/{username}/reports/{report_id}/photos/{photo_id}
修改照片说明
PUT example.com/api/users/{username}/reports/{report_id}/photos/{photo_id}
问题
- 在 URL 中添加资源 ID(即资源/ID)是一种好习惯,还是应该将其添加为查询参数?
- 这种链接资源(即资源/id/sub-resource/id/等)的方法是否可接受且良好,或者我应该将所有资源放在顶层并使用查询参数指定其位置?
【问题讨论】:
-
我喜欢您所拥有的,但我很好奇您为什么不将照片和报告视为顶级资源。例如,/reports/{reportid}/authors /reports/{reportid}/photos /photos/{photoid}/authors /photos/{photoid}/reports。我了解您的限制,但只是好奇,为什么您不想从不同的入口点钻取数据。如果报告有多个作者怎么办 - 如果您有报告 ID 或标题但没有作者等怎么办。没有理由您不能有多个路径到同一资源,但我建议通知用户规范如果你这样做,每个的 URI。
-
旁注:Restful API 应该始终版本化(
example.com/api/…vs.example.com/api/1/…),以便避免 URI 冲突与未来 API 更改。
标签: web-services rest