加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – 用于检查/取消选中喜欢/不喜欢/不喜欢资源的

发布时间:2020-12-17 04:38:14 所属栏目:百科 来源:网络整理
导读:目前我正在开发API并且在该API中我希望已登录的用户能够喜欢/不喜欢或喜欢/不喜欢两个资源. 我的“Like”模型(它是Ruby on Rails 3应用程序)是多态的,属于两种不同的资源: /api/v1/resource-a/:id/likes 和 /api/v1/resource-a/:resource_a_id/resource-b/:
目前我正在开发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中实现like / different结构:

案例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

在这两种情况下我都有一个用户会话,所以在删除/“unliking”时我不必提及相应的“like”-record的id.

我想知道你们是如何实施这些案件的!

2011年4月15日更新:使用“会话”我的意思是与每个请求一起发送HTTP基本身份验证标头并提供加密的用户名:密码组合.

解决方法

我认为你在服务器上维护应用程序状态(包含用户id的用户会话)的事实是这里的问题之一.这使得它比它需要的更加困难,并且它打破了REST的无状态约束.

在案例A中,您已经为操作提供了URI,这也不是RESTful. URI标识资源,并且应使用所有资源共有的统一接口来执行状态转换.我认为案例B在这方面要好得多.

所以,考虑到这两件事,我建议如下:

PUT /api/v1/resource/:id/likes/:userid
DELETE /api/v1/resource/:id/likes/:userid

我们还有一个额外的好处,即用户只能注册一个’喜欢'(他们可以根据自己的喜好重复’喜欢’,并且由于PUT是幂等的,无论执行多少次都会产生相同的结果) . DELETE也是幂等的,因此如果由于某种原因多次重复“不同”操作,则系统保持一致状态.当然你可以用这种方式实现POST,但是如果我们使用PUT和DELETE,我们可以看到与这些动词相关的规则似乎非常适合我们的用例.

我还可以想象另一个有用的请求:

GET /api/v1/resource/:id/likes/:userid

这将返回“喜欢”的细节,例如它的制作日期或序数(即“这是第50个喜欢!”).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读