我对REST想法的唯一真正了解是通过Ruby on Rails的RESTful routing进行的。这非常适合我用Rails构建的基于CRUD的应用程序,但是因此,我对RESTfulness的理解受到一定限制。

假设我们有一个有限的Item集合,每个都有唯一的ID,以及许多属性,例如颜色,形状和大小(某些Item可能未定义)。

一个客户可以使用项目一段时间,但是每个项目只能一次被一个客户使用。对项目的访问由服务器控制。客户可以从服务器请求临时使用某些项目。

通常,客户只会对访问具有特定属性的多个项目感兴趣,而对访问特定项目不感兴趣。

当客户端请求使用多个项目时,服务器将以与请求相对应的ID列表进行响应,或以表示所请求的项目当前不可用或不存在的响应进行响应。

客户可以提出以下几种请求:

  • 告诉我有多少个绿色三角形项(总计/可用)。
  • 给我使用200个大红色物品。
  • 我已经完成了项目21、23、23。
  • 添加100个新的红色方块物品。
  • 删除50个绿色小物品。
  • 将所有大的黄色五边形项目修改为蓝色。


  • 上面的玩具示例就像我最近不得不处理的资源分配问题。我应该如何进行REST风格的思考?

    最佳答案

    理解的技巧是从名词而不是动词来思考问题。

    在其余世界中,动词全都是“预设”,名词变得无限灵活。在肥皂或大鹏世界中,动词是无限灵活的。将您的思维限制在锁定动词上,然后查看在约束范围内解决问题所需的名词。

    这正是darrel在上述答案中所做的-他为锁创建了一个新名词,该锁可以满足您的约束,然后设置对它们的访问权限以实现您想要的。

    您的某些问题是与搜索或过滤器相关的-针对那些针对资源类型考虑GET的问题,传入查询参数以限制或过滤结果。

    关于rest - 通过示例了解REST,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2750659/

    10-10 19:44
    查看更多