在阅读了大量关于REST和SOAP之间的区别之后,我的印象是REST只是HTTP的另一种说法。有人能解释一下REST给HTTP添加了什么功能吗?

注意:我并不是在寻找REST和SOAP的比较。


当前回答

HTTP是一种在网络上传输消息的通信协议。 SOAP是一种用于交换基于xml的消息的协议,这些消息可以使用HTTP传输这些消息。 Rest是用于交换任何(XML或JSON)消息的协议,这些消息可以使用HTTP来传输。

其他回答

REST是SOAP的轻版本,不添加糖或着色剂。 SOAP和REST的目标都是允许用不同语言编写并使用不同通信协议的信息系统之间进行通信。

SOAP使用API契约来公开它的服务,并定义客户端调用服务的方式,应该发送什么参数以及预期的结果,而REST则不使用API契约,对于客户端来说,要知道存在什么服务以及如何调用它们,应该查看REST API文档(这可以在OpenAPI或Swagger的yml文件中定义)。

其次,SOAP是冗长的,它使用XML发送请求并描述服务、参数和返回的结果。另一方面,REST依赖简单的JSON对象来发送请求和接收结果。JSON易于理解,轻量级,并且在发送请求或接收结果时不会占用太多带宽。

REST是一种设计大型系统(如web)的特殊方法。

它是一组“规则”(或“约束”)。

HTTP是一个试图遵守这些规则的协议。

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

今天我们只使用了HTTP协议的一小部分方法——即GET和POST。REST的方法是使用协议的所有方法。

例如,REST规定使用DELETE来删除URI后面的文档(可以是文件、状态等),而使用HTTP,您可能会滥用GET或POST查询,如…product/?delete_id=22。

你不知道HTTP和REST之间的区别

因此REST体系结构和HTTP 1.1协议是相互独立的 其他,但HTTP 1.1协议被构建为理想的协议 遵循REST的原则和约束。一种方法是看 HTTP和REST之间的关系是,REST是设计,并且 HTTP 1.1就是这种设计的实现。

HTTP是一种契约,一种通信协议,REST是一种概念,一种架构风格,可以使用HTTP、FTP或其他通信协议,但广泛与HTTP一起使用。

REST暗示了一系列关于服务器和客户端应该如何交互的约束。HTTP是一种具有特定机制的通信协议,用于服务器-客户端数据传输,它最常用于REST API,因为REST是受WWW (world wide web)的启发,在REST定义之前,WWW大量使用HTTP,因此使用HTTP更容易实现REST API风格。

REST中有三个主要的约束(但还有更多):

服务器和客户端之间的交互应该只通过超文本来描述。 服务器和客户端应该是松散耦合的,彼此之间不做任何假设。客户端应该只知道资源入口点。交互数据应该由服务器在响应中提供。 服务器不应该存储任何关于请求上下文的信息。请求必须是独立的和幂等的(意思是如果相同的请求无限次重复,得到的结果完全相同)

HTTP只是一种通信协议(一种工具),可以帮助实现这一点。

欲了解更多信息,请查看以下链接:

https://martinfowler.com/articles/richardsonMaturityModel.html http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven