当前位置:  开发笔记 > 前端 > 正文

什么是最好/常见的RESTful url动词和动作?

如何解决《什么是最好/常见的RESTfulurl动词和动作?》经验,为你挑选了2个好方法。

我正在尝试找到有关最佳和最常见的RESTful网址操作的一些信息.

例如,您使用什么URL来显示项目的详细信息,编辑项目,更新等.

/question/show/
/question/edit/
/question/update/ (this is the post back url)
/question/list   (lists the questions)

哼.感谢任何人的帮助:)



1> Brian R. Bon..:

使用网址指定您的对象,而不是您的操作:

请注意您首先提到的不是RESTful:

/questions/show/

相反,您应该使用您的URL来指定您的对象:

/questions/

然后,您在该资源上执行以下操作之一.


得到:

用于获取资源,查询资源列表以及查询资源的只读信息.

要获取问题资源:

GET /questions/ HTTP/1.1
Host: whateverblahblah.com

列出所有问题资源:

GET /questions HTTP/1.1
Host: whateverblahblah.com

POST:

用于创建资源.

请注意以下是一个错误:

POST /questions/ HTTP/1.1
Host: whateverblahblah.com

如果尚未创建URL,则在指定名称时不应使用POST来创建URL.这应该导致资源找不到错误,因为还不存在.您应该首先在服务器上放置资源.您可以争辩说,通过创建一个新问题,您还可以更新/ questions资源,因为它现在会在其问题列表中再返回一个问题.

你应该做这样的事情来使用POST创建资源:

POST /questions HTTP/1.1
Host: whateverblahblah.com

请注意,在这种情况下,未指定资源名称,将返回新对象URL路径.

删除:

用于删除资源.

DELETE /questions/ HTTP/1.1
Host: whateverblahblah.com

放:

用于在指定资源URL时创建资源或覆盖它.

对于新资源:

PUT /questions/ HTTP/1.1
Host: whateverblahblah.com

要覆盖现有资源:

PUT /questions/ HTTP/1.1
Host: whateverblahblah.com

......是的,他们是一样的.PUT通常被描述为"编辑"方法,因为通过用稍微改变的版本替换整个资源,您已经编辑了客户端下次执行时将获取的内容.


在HTML表单中使用REST:

的HTML5规范定义GET和POST form元素.

方法内容属性是枚举属性,具有以下关键字和状态:

关键字GET,映射到状态GET,表示HTTP GET方法.

关键字POST,映射到状态POST,表示HTTP POST方法.


从技术上讲,HTTP规范并不仅限于那些方法.您在技术上可以自由添加任何您想要的方法,但在实践中,这不是一个好主意.我们的想法是每个人都知道你使用GET来读取数据,所以如果你决定使用READ,它会让人感到困惑.那说......

补丁:

这是在正式RFC中定义的方法.它被设计用于当您希望仅对资源发送部分修改时,它将像PUT一样使用:

PATCH /questions/ HTTP/1.1
Host: whateverblahblah.com

就是把差异有发送整个资源,不管它有多大相比,有什么实际改变,而PATCH你可以给刚刚更改.


如果你想学习所有关于REST的信息,我建议你顺便购买这本书http://oreilly.com/catalog/9780596529260/

2> Allain Lalon..:

假设/questions/10是一个有效的问题,那么该方法用于与之交互.

POST添加到它

PUT创建或替换它

GET查看/查询它

并删除它...删除它.

网址不会改变.


错误.PUT必须是幂等的.您必须能够多次发出相同的PUT请求,并且在第一次之后没有效果.因此,使用每个PUT请求创建资源不是幂等的.
"方法PUT和DELETE被定义为幂等的,这意味着多个相同的请求应该具有与单个请求相同的效果.",在当前不使资源可用的URI处使用put可以创建资源.立即再次投入将再次进行,这将无效.通过这种方式,您可以创建资源,但查询仍然是幂等的.如果您以后回来并希望更改资源,那么您可以将PUT转换为具有不同数据的相同URI(这将是一个不同的请求,并且本身可以重复任意次数并具有相同的结果).
只要指定允许新资源的ID,创建才有效.虽然这是可能的,但用户通常更有意义地POST到/ collection并返回包含新id的链接:
@aehIke由PUT创建一个新资源并不会使它成为非幂等因素,因为如果我'PUT/items/10'和第10项之前不存在,那么它就会被创建.然而,如果我第二次再次'PUT/items/10',那么它现在已经存在,因此它将被替换,因此幂等性被保留,因为后续的PUT请求没有新的副作用.(当然这是假设我每次都保持相同的项目)
推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有