Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http 我们为什么要休息?_Http_Rest - Fatal编程技术网

Http 我们为什么要休息?

Http 我们为什么要休息?,http,rest,Http,Rest,如果我只需要post和get请求就可以完成工作,为什么我要使用REST?为什么你认为只使用post和get意味着它不是REST 需要说明的是,每个“资源”都有一个资源标识符,即URI。每个URI都可能有GET、POST、PUT和DELETE 得到是阅读 帖子正在更新中 投入就是创造 删除就是删除 如果你没有做这些事情,比如PUT是一种罕见的潜在安全漏洞,那么你就没有做。如果你的GET请求没有成功,那么服务器和客户端之间的HTTP缓存就会破坏你的应用程序POST请求不是幂等的,因此HTTP缓存

如果我只需要post和get请求就可以完成工作,为什么我要使用REST?

为什么你认为只使用post和get意味着它不是REST

需要说明的是,每个“资源”都有一个资源标识符,即URI。每个URI都可能有GET、POST、PUT和DELETE

  • 得到是阅读
  • 帖子正在更新中
  • 投入就是创造
  • 删除就是删除

如果你没有做这些事情,比如PUT是一种罕见的潜在安全漏洞,那么你就没有做。

如果你的
GET
请求没有成功,那么服务器和客户端之间的HTTP缓存就会破坏你的应用程序<根据定义,code>POST请求不是幂等的,因此HTTP缓存不会缓存这些请求和结果:您仍然可以在不破坏应用程序协议的情况下获得缓存
get
请求的好处。巨大的成功


而且,如果您需要删除对象,
delete
将比执行删除操作的
POST
请求更容易在线路和日志上读取。但是web浏览器不能用
DELETE
动词轻易地发出HTTP请求,因此它实际上更适合您自己编程的客户端。

您应该使用REST,因为它包含了您想要对资源/对象执行的所有潜在操作

  • 获取-根据给定条件检索资源
  • 后期创建一个资源
  • PUT-使用给定的更新属性更新资源
  • 删除-删除资源

另一个原因是,它是每个人都可以实现和使用的标准。要了解为什么标准化很重要,我建议阅读和(这很有趣,但确实有助于人们理解休息的概念).

正确地使用REST可以帮助您的系统组件保持适当的解耦,并且与以典型的RPC方式将它们直接绑定在一起相比,将来可以更容易地进行演化。这是您必须根据应用程序的需要做出的架构选择。其他人已经注意到了一些技术上的好处,也应该考虑到这些好处。

罗伊·菲尔丁(Roy Fielding)在博客中对这些好处有些失望

REST要求使用超文本,因为客户端和服务器之间的耦合非常松散,因此超文本的伸缩性非常好。使用REST,服务器可以随意更改公开的资源。除了REST本身定义的API之外,没有固定的API。客户端只需要知道初始URI,然后从服务器提供的选项中选择导航或执行操作。服务器可以将代码下载到客户端,这有助于导航和状态表示

所有这些都与各种远程过程调用(RPC)方案形成了鲜明对比,在这些方案中,客户机和服务器必须就通常需要编译到两端的详细协议达成一致(例如,在一个极端以特定顺序访问的特定形式的URI,在另一个极端以SOAP/WSDL/WS*访问)。这种方法很脆弱,因为任何更改都需要同时在服务器端和客户端实现。随着服务器和/或客户端数量的增加,它很快变得无法维持。服务器尤其受到影响,因为随着流行度的增加,发布的API的演变变得越来越困难

鉴于这些因素,在可能的情况下,休息总是更好的选择。它允许服务器的快速发展,并允许大量应用程序在临时基础上自由交互(例如,整个互联网)

但是“可能的时候”那部分呢?当循环中有人时,REST工作得最好。毕竟,当面对一组以前未知的选项时,人类有很好的机会做出理性的选择。机器还没有出现。Web RPC协议的诞生正是为了将双方束缚在一个固定的协议上。这使得当人从图片中移除时,自动化过程更容易通信。当纯自动操作比进化和可伸缩性(在互联网时间和互联网规模上)更重要时,RPC是一种有效的设计选择

缩放和耦合?

这里的“规模”是指广义的规模。它包括用户数和会话数,是的,还包括应用程序大小和开发过程。紧密耦合严重阻碍了应用程序的大小。如果没有REST架构提供的极度松散的耦合,很难想象已知最大的应用程序万维网的存在。全球数以百万计的开发人员合作构建了这个支持数十亿用户的应用程序。然而,开发人员在这样做的同时仍然很高兴地不知道彼此(或者至少,如果没有StackOverflow;,他们会不知道彼此)


REST的主要启用原则是超文本。体系结构的其他元素在很大程度上(从各种意义上)支持这一原则。REST是构建Web的唯一可行方式吗?不,但这恰好是非常成功的事实标准。它应该是进入生态系统的任何新入口的默认选择,只有在仔细和明确的设计考虑之后才会被丢弃。

在REST中发现要容易得多。我们有WADL文档(类似于传统Web服务中的WSDL),可以帮助您向世界宣传您的服务。您也可以使用UDDI发现。使用传统的HTTP POST和GET,人们可能不知道要调用您的消息请求和响应模式。

REST允许轻松改进API设计。这就是REST的关键所在——您正在创建一个API。一些评论触及了这一思想的各个方面,但实际上并没有将核心问题带到生活中。当您处理REST时,您正在创建一个将由客户机(或您自己)使用的API。HTTP协议