【发布时间】:2011-04-14 15:46:16
【问题描述】:
目前我正在开发一个 API,在该 API 中,我希望登录的用户能够喜欢/不喜欢或喜欢/不喜欢两个资源。
我的“Like”模型(它是一个 Ruby on Rails 3 应用程序)是多态的,属于两种不同的资源:
/api/v1/resource-a/:id/likes
和
/api/v1/resource-a/:resource_a_id/resource-b/:id/likes
问题是:我不确定选择哪种方式使我的资源尽可能地 RESTful。我已经尝试了以下两种方法来在我的 URL 中实现类似/不同的结构:
案例 A:(喜欢/不喜欢成为“资源”的成员)
PUT /api/v1/resource/:id/like maps to Api::V1::ResourceController#like
PUT /api/v1/resource/:id/unlike maps to Api::V1::ResourceController#unlike
和案例B:(“喜欢”是它自己的资源)
POST /api/v1/resource/:id/likes maps to Api::V1::LikesController#create
DELETE /api/v1/resource/:id/likes maps to Api::V1::LikesController#destroy
在这两种情况下,我已经有一个用户会话,所以我在删除/“取消喜欢”时不必提及相应“喜欢”记录的 id。
我想知道你们是如何实现这样的案例的!
2011 年 4 月 15 日更新:“会话”是指随每个请求发送的 HTTP 基本身份验证标头并提供加密的用户名:密码组合。
【问题讨论】:
-
跟我想的一模一样!
标签: ruby-on-rails-3 api rest