我正在开发使用RESTFul技术的请愿网站。如何在这种情况下命名RESTFUL资源
例如:/ petition/1标识某个petiton(资源)。
我该如何命名
a)签署请愿书?
/请愿/签名/ 1 或 /请愿/ 1 /签署 或 ???
b)中搜索基于术语(丰富的请愿书,例如)
/请愿/搜索/富 /申请?搜索=丰富
并且最后
c)中仅看到某一类
/请愿书/分类/ 1 /请愿?类别= 1
谢谢。
我正在开发使用RESTFul技术的请愿网站。如何在这种情况下命名RESTFUL资源
例如:/ petition/1标识某个petiton(资源)。
我该如何命名
a)签署请愿书?
/请愿/签名/ 1 或 /请愿/ 1 /签署 或 ???
b)中搜索基于术语(丰富的请愿书,例如)
/请愿/搜索/富 /申请?搜索=丰富
并且最后
c)中仅看到某一类
/请愿书/分类/ 1 /请愿?类别= 1
谢谢。
我会做
对于轨道路线将是:
resources :categories do
resources :petitions
end
resources :petitions do
resources :signatures
end
正如@BrianDriscoll在他的评论中提到的那样,在为REST架构中的资源创建URL时,必须注意保持URL为只是名词(东西在您的应用程序中)并且动词是HTTP方法。
现在,这一点已经摆脱了困境,我们可以开始深入了解应用程序中名词的真正含义。从外观上来看,你在你的领域基本上是3 “东西”(或名词):
假设了一份请愿书签名只能应用于一个请愿书,我希望以下URL模式可以代表您的资源:
/petitions
- 所有上访的列表(信访根)/petitions/5
- 单请愿/petitions/5/signatures
- 所有签名的单个请愿/petitions/5/signatures/7
清单 - 在一个单一的请愿书单签名/categories
- 所有类别(类别根)的列表/categories/3
- 单个类别(可能是该类别中所有请求的列表)然后,用这些资源,你可以使用HTTP动词来操作资源:
POST /petitions
- 创建一个新的请愿书POST /petitions/9/signatures
- 在请愿最后,对于搜索,您只需将查询字符串传递到您的/petititions
URL,如下所示:
GET /petitions?query=blah
该查询可以是任何您需要的搜索引擎,它应该返回与该查询匹配的请求列表。搜查请愿书内的签名或类别内的请愿书也是如此。
这应该足以让你现在启动并运行。最终,归结为决定你的应用程序需要什么“事物”和表示这些东西,然后URL就是这些东西的“名称”,就像地址是房子的“名称”一样。与这些资源(事物)交互是通过不同的HTTP动词完成的。
这仅仅是冰山一角一个REST架构,其中包括像定义内容类型,让客户知道如何浏览您的域,并使用超文本作为应用程序状态引擎的真正力量的表面,使客户能实际做服务器上的导航。
在REST中,URI代表名词,而不是动词。 – 2012-03-20 13:47:26