我正在创建一个由API驱动的抽奖活动应用程序.层次结构相当简单.
客户可以拥有基本上是任何抽奖活动管理员的用户.客户也可以有多次抽奖活动.单个抽奖活动可以有多个提交.好的,并不复杂.
我感到困惑的地方是对URL结构的正确方法.我在互联网上阅读了文档和最佳实践博客,但我仍然感到困惑.以下是我们目前的路线:
CLIENTS
POST/clients
GET/clients
GET/clients /:client_id
PUT/clients:client_id
USERS
POST/users
GET/users
GET/users /:user_id
PUT/users /:user_id
DELETE/users /:user_id
抽奖
POST /抽奖
GET /抽奖
GET /抽奖/:sweepstakes_id
PUT /抽奖/:sweepstakes_id
DELETE /抽奖/:sweepstakes_id
提交
POST /提交
GET /提交
GET /提交/:submission_id
PUT /提交/:submission_id
DELETE/submissions /:submission_id
正如您所看到的,我每个资源都遵循一个简单的2个URL - 我认为这是最佳实践.然后,您可以通过查询参数在任何GET请求上钻取关联(例如/提交?sweepstakes_id = {sweepstakes_id},/ sweepstakes?client_id = {client_id}等).
这当然对我来说很有意义,但是我的同事和我在一起,因为他正在使用Backbone来构建主要的前端应用程序.Backbone表示他们支持RESTful API消费,但我的同事告诉我Backbone更喜欢代表层次结构的URL结构.我当然认为这将导致混乱,冗长,整体混乱的URL结构.理想情况下,我的同事希望看到以下URL结构:
GET /客户
GET /客户/用户
GET /客户/抽奖
GET /客户/抽奖/提交
注意:上述路由还有其他路由来通过URL中的附加资源ID来补充单个资源(例如/ clients/users /:user_id,/ clients/sweepstakes /:sweepstakes_id/submissions等).
我知道这有点敏感,但我很想听到一些反馈.我投票支持每个资源一个2个URL,如果需要进行任何关联,可以通过使用GET或POST参数来完成.但我可能完全错了.
| 归档时间: |
|
| 查看次数: |
6627 次 |
| 最近记录: |