我正在创建一个Web服务,我对路径名有一些疑问。如何在RESTful Web服务中指定对资源的操作?
例如:测验资源。你有正常的CRUD动作,你也想做测验。比如生成新的测验。这是一个动作。您是使用/quiz/top5
或/quiz?type=top5
之类的路径还是使用什么?
我不明白在创建RESTful服务时如何编写对资源执行操作的路径。
答案 0 :(得分:1)
这是你喜欢的。我个人喜欢last.fm API的工作方式:
但如果您正在寻找一些不错的标准,请查看以下帖子:
答案 1 :(得分:1)
我会从apigee Web API Design: Crafting Interfaces that Developers Love推荐这本电子书。
遵循他们的建议:
+------------+-------------------+--------------+----------------------------------------+------------------+ | Resource | POST create | GET read | PUT update | DELETE delete | | /quizzes | Create a new quiz | List quizs | Bulk update quizs | Delete all quizs | | /quizes/12 | Error | Show Quiz 12 | If exists update Quiz 12, if not Error | Delete Quiz 12 | +------------+-------------------+--------------+-----------------------------------------+------------------+
关于您想要的顶级列表,也许类似于他们在“分页和部分响应”部分中概述的解决方案可能符合您的需求:
quizzes/top?limit=5
通过这种方式,您可以首先使用默认值(5或10个项目)制作资源quizs/top
,然后提供分页/更改项目数量的功能。
答案 2 :(得分:0)
这真的取决于你 - RESTful模式不会规定命名约定。
What are the best/common RESTful url verbs and actions?这对你有帮助吗?
让路线合理:例如测验/显示/ {id},测验/顶部/ {数字}等...
编辑:添加关于路线操作命名的评论答案,取自Rails Convention。 http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions
答案 3 :(得分:0)
我建议您将此答案https://stackoverflow.com/a/11170376/300886阅读为类似的问题。
通常,您应该考虑通过GET提供API的哪些部分,以及通过POST提供哪些部分。通过GET可用的资源通常应该使用名词来描述,操作(比如可能发布测验的答案)应该通过使用动词描述的POST(或DELETE,也许)来提供,也许在名词之后 - 资源名称采取行动。
答案 4 :(得分:0)
如this文章中所述,最好对REST URL使用目录,如。
像/{type}/{operation}/{param1}/{param2}...
看起来更直观和可维护(如果太多,param可以作为经典?=
传递)
所以在你的情况下它可以是/quiz/top/5
,或者如果明天它应该前100 ,那么同样可以重用为/quiz/top/100
答案 5 :(得分:0)
网址标识您的对象。 HTTP方法指定服务器应对对象执行的操作(或操作)。
例如:
/quiz/top5