在阅读了大量关于REST和SOAP之间的区别之后,我的印象是REST只是HTTP的另一种说法。有人能解释一下REST给HTTP添加了什么功能吗?
注意:我并不是在寻找REST和SOAP的比较。
在阅读了大量关于REST和SOAP之间的区别之后,我的印象是REST只是HTTP的另一种说法。有人能解释一下REST给HTTP添加了什么功能吗?
注意:我并不是在寻找REST和SOAP的比较。
当前回答
不,REST是HTTP应该使用的方式。
今天我们只使用了HTTP协议的一小部分方法——即GET和POST。REST的方法是使用协议的所有方法。
例如,REST规定使用DELETE来删除URI后面的文档(可以是文件、状态等),而使用HTTP,您可能会滥用GET或POST查询,如…product/?delete_id=22。
其他回答
HTTP是一种应用协议。REST是一组规则,遵循这些规则,您就可以构建具有特定约束集的分布式应用程序。
如果您正在寻找REST中区分RESTful应用程序与任何HTTP应用程序的最重要的约束,我会说“自描述”约束和超媒体约束(又名hypermedia as the Engine of application State (HATEOAS))是最重要的。
自描述约束要求RESTful请求在用户意图中是完全自描述的。这允许中介(代理和缓存)安全地对消息进行操作。
HATEOAS约束是关于将您的应用程序转换为一个链接网络,其中客户端的当前状态基于它在该网络中的位置。这是一个棘手的概念,需要比现在更多的时间来解释。
REST是SOAP的轻版本,不添加糖或着色剂。 SOAP和REST的目标都是允许用不同语言编写并使用不同通信协议的信息系统之间进行通信。
SOAP使用API契约来公开它的服务,并定义客户端调用服务的方式,应该发送什么参数以及预期的结果,而REST则不使用API契约,对于客户端来说,要知道存在什么服务以及如何调用它们,应该查看REST API文档(这可以在OpenAPI或Swagger的yml文件中定义)。
其次,SOAP是冗长的,它使用XML发送请求并描述服务、参数和返回的结果。另一方面,REST依赖简单的JSON对象来发送请求和接收结果。JSON易于理解,轻量级,并且在发送请求或接收结果时不会占用太多带宽。
HTTP是一种在网络上传输消息的通信协议。 SOAP是一种用于交换基于xml的消息的协议,这些消息可以使用HTTP传输这些消息。 Rest是用于交换任何(XML或JSON)消息的协议,这些消息可以使用HTTP来传输。
REST是一种设计大型系统(如web)的特殊方法。
它是一组“规则”(或“约束”)。
HTTP是一个试图遵守这些规则的协议。
不,REST是HTTP应该使用的方式。
今天我们只使用了HTTP协议的一小部分方法——即GET和POST。REST的方法是使用协议的所有方法。
例如,REST规定使用DELETE来删除URI后面的文档(可以是文件、状态等),而使用HTTP,您可能会滥用GET或POST查询,如…product/?delete_id=22。