我正在创建一个Web服务,对于路径名有些疑问。在RESTful Web服务中如何指定资源上的操作?
例如:一种Quiz资源。您需要进行普通的CRUD操作,还要对测验进行一些其他操作,例如生成新的测验。这就是一个动作。您是否使用/quiz/top5
或/quiz?type=top5
之类的路径?
我不理解如何编写可以在RESTful服务中执行资源操作的路径。
我正在创建一个Web服务,对于路径名有些疑问。在RESTful Web服务中如何指定资源上的操作?
例如:一种Quiz资源。您需要进行普通的CRUD操作,还要对测验进行一些其他操作,例如生成新的测验。这就是一个动作。您是否使用/quiz/top5
或/quiz?type=top5
之类的路径?
我不理解如何编写可以在RESTful服务中执行资源操作的路径。
+------------+-------------------+--------------+----------------------------------------+------------------+
| 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 |
+------------+-------------------+--------------+-----------------------------------------+------------------+
关于您想要的排行榜,也许类似于“分页和部分响应”部分中概述的解决方案可能适合您的需求:
< p > < code > quizzes / top?limit = 5
使用此方法,您可以首先创建一个资源 < code > quizs / top ,其中包含默认值(5或10个项目),然后提供分页/更改项目数量的功能。这取决于您的个人喜好。我个人比较喜欢last.fm API的工作方式:
但如果您正在寻找一些不错的标准,请查看以下文章:
这真的取决于你 - RESTful模式不规定命名约定。
什么是最好/常见的RESTful url动词和操作? 这可能会对你有所帮助?
只需使路由合理:例如quiz/show/{id},quiz/top/{number}等...
编辑:添加关于路由操作命名的答案,取自Rails Convention。 http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions
...
- LuckyLuke我建议阅读这个类似问题的答案https://dev59.com/inRA5IYBdhLWcg3w8SeJ#11170376。
一般来说,您应该考虑哪些部分的API应该通过GET可用,哪些通过POST可用。 通过GET可用的资源通常应使用名词进行描述,而动作(例如回答测验)应该通过POST(或DELETE,也许)进行描述,可以在名词之后使用动词,可能是在执行操作的资源名称之后。
最好使用像目录一样的结构来构建REST URL,就像this文章中所解释的那样。
像/{type}/{operation}/{param1}/{param2}...
这样的URL
看起来更直观和易于维护(如果参数太多,可以使用经典的?=
传递参数)
因此,在您的情况下,它可以是/quiz/top/5
,或者如果明天应该是前100名,则可以重复使用相同的/quiz/top/100
URLs识别您的对象。 HTTP方法指定服务器应在对象上执行的操作(或操作)。
例如:
/quiz/top5
/quiz/generate/123
来代表id为123
。 - Aram Kocharyan/quiz/{id}
。 - burning_LEGION