我正在开发一个使用RESTFul技术的请愿网站。
例如:/ petition / 1识别某个petiton(资源)。
我该如何命名
a)签署请愿书?
/请愿/签名/ 1 要么 /请愿/ 1 /符号 要么 ???
b)根据条款(例如,丰富)搜索请愿书
/请愿/搜索/富 /上访?搜索=富
最后
c)仅查看某个类别
/请愿/类别/ 1 /请愿?类别= 1
谢谢。
答案 0 :(得分:4)
正如@BrianDriscoll在他的评论中提到的,在为REST架构中的资源创建URL时,必须小心保持URL 只是名词( thing < / em>在你的应用程序中)和动词是HTTP方法。
现在我们可以开始深入研究你的应用程序中的名词究竟是什么了。从它的外观来看,你的域中基本上有3个“东西”(或 nouns ):
假设请愿签名只能应用于一份请愿书,我希望以下网址格式代表您的资源:
/petitions
- 所有请愿书(请愿书根目录)的清单/petitions/5
- 一份请愿书/petitions/5/signatures
- 单个请愿书的所有签名列表/petitions/5/signatures/7
- 单一请愿书上的单一签名/categories
- 所有类别(类别根目录)的列表/categories/3
- 单个类别(可能是该类别中所有请愿书的列表)然后,使用这些资源,您可以使用HTTP谓词来操纵资源:
POST /petitions
- 制作新请愿书POST /petitions/9/signatures
- 在请愿书上创建新签名最后,对于搜索,您只需将查询字符串传递到/petititions
网址,如下所示:
GET /petitions?query=blah
查询可以是搜索引擎所需的任何内容,它应返回与该查询匹配的请愿列表。对于在一个类别中的请愿书或请愿书中搜索签名也是如此。
这应该足以让你现在开始运行。最终,它归结为决定你的应用程序需要的那些东西的“东西”和表示,然后URL只是这些东西的“名称”,就像地址是房子的“名称”。与这些资源(事物)的交互是通过不同的HTTP动词完成的。
这只是揭示了REST体系结构的真正力量的表面,其中包括定义内容类型以便客户端知道如何导航域,以及使用超文本作为应用程序状态的引擎以便客户端实际< em> 服务器上的导航。
答案 1 :(得分:1)
我愿意
对于铁路线路,它将是:
resources :categories do
resources :petitions
end
resources :petitions do
resources :signatures
end