HTTP和REST有什么区别?

在仔细阅读了REST和SOAP之间的区别之后,我得到了REST只是HTTP的另一个词的印象。 有人可以解释REST向HTTP添加了哪些功能?

注意:我没有寻找REST和SOAP的比较。

更新:感谢您的回答。 现在我已经清楚REST只是一套关于如何使用HTTP的规则。 因此,我发布了关于这些约定的优点的后续行动。

注意:我现在掌握REST的含义; 正如Emil Ivanov所言,REST意味着按照它的意思使用HTTP。 然而,我不确定这是否值得自己来说,我当然不会听到这个宣传。


不, REST是应该使用HTTP的方式。

今天,我们只使用一小部分HTTP协议的方法 - 即GETPOST 。 REST的方法是使用所有协议的方法。

例如,REST规定使用DELETE擦除URI后面的文档(无论是文件,状态等),而使用HTTP时,您会误用GETPOST查询,如...product/?delete_id=22


HTTP是一种用于通信的协议,通常用于与网络资源或任何具有Web浏览器客户端的应用程序进行通信。

REST意味着您在设计应用程序时使用的主要概念是资源:对于您要执行的每个操作,您需要定义一个资源,在该资源上通常只执行CRUD操作,这是一项简单的任务。 因为使用HTTP协议中使用的4个动词与4个CRUD操作(Get for Read,POST用于CREATE,PUT用于UPDATE,DELETE用于DELETE)非常方便。 这与RPC(远程过程调用)的旧概念不同,在这个概念中,您有一组您想要执行的操作,这是因为用户的调用。 如果您认为例如如何在帖子中描述Facebook,使用RPC,您可以创建名为AddLikeToPost和RemoveLikeFromPost的服务,并将其与所有与FB帖子相关的其他服务一起管理,因此您不需要创建特殊对象为Like。 在REST中,您将拥有一个Like对象,它将与Delete和Create函数分开管理。 这也意味着它会在你的数据库中描述一个独立的实体。 这可能看起来像一个小的差异,但像这样工作通常会产生更简单的代码和更简单的应用程序。 使用这种设计,应用程序的大部分逻辑在对象的结构(模型)中都是显而易见的,与RPC通常不得不明确添加更多逻辑的RPC不同。

设计RESTful应用程序通常比较困难,因为它要求您以简单的方式描述复杂的事情。 仅使用CRUD函数描述所有功能是非常棘手的,但在做完这些之后,您的生活会变得更加简单,并且您会发现您将编写更短的方法。

目前还有一种限制REST体系结构不是在与客户端通信时使用会话上下文(无状态),这意味着所有信息都需要了解谁是客户端,并且他需要的信息是通过Web消息传递的。 每个对函数的调用都是自描述的,没有以前可以在消息中引用的客户端对话。 因此,客户不能告诉你“给我下一页”,因为你没有一个会话来存储什么是上一页和你想要什么样的页面,客户不得不说“我的名字是yuval,得到我在特定论坛的特定帖子的第2页“。 这意味着更多的数据将不得不在通信中传输,但想一想找到从“让我下一页”功能报告的错误与“在堆栈溢出中让我第2页问题ID 2190836”之间的区别。

当然还有更多,但以我的观点来看,这是茶匙的主要概念。


REST不会向HTTP添加任何特定的功能,但是它是与HTTP一起开发的体系结构样式,并且最常使用HTTP作为其应用层协议。

链接地址: http://www.djcxy.com/p/41011.html

上一篇: What is the difference between HTTP and REST?

下一篇: What is the main difference between PATCH and PUT request?