REST & SOAP 区别,它们和 HTTP 协议关系

REST & SOAP 区别,它们和 HTTP 协议关系

在这里插入图片描述

什么是SOAP?

  SOAP (Simple Object Access Protocol) 顾名思义,是一个严格定义的信息交换协议,用于在Web Service中把远程调用和返回封装成机器可读的格式化数据。事实上SOAP数据使用XML数据格式,定义了一整套复杂的标签,以描述调用的远程过程、参数、返回值和出错信息等等。而且随着需要的增长,又不得增加协议以支持安全性,这使SOAP变得异常庞大,背离了简单的初衷。另一方面,各个服务器都可以基于这个协议推出自己的API,即使它们提供的服务及其相似,定义的API也不尽相同,这又导致了WSDL的诞生。

  WSDL (Web Service Description Language) 也遵循XML格式,用来描述哪个服务器提供什么服务,怎样找到它,以及该服务使用怎样的接口规范,简言之,服务发现。现在,使用Web Service的过程变成,获得该服务的WSDL描述,根据WSDL构造一条格式化的SOAP请求发送给服务器,然后接收一条同样SOAP格式的应答,最后根据先前的WSDL解码数据。绝大多数情况下,请求和应答使用HTTP协议传输,那么发送请求就使用HTTP的POST方法。

什么是REST?

  REST (REpresentational State Transfort) 形式上应该表述为客户端通过申请资源来实现状态的转换,在这个角度系统可以看成一台虚拟的状态机。抛开R. T. Fielding博士论文里晦涩的理论不说,REST应该满足这样的特点:1)客户端和服务器结构;2)连接协议具有无状态性;3)能够利用Cache机制增进性能;4)层次化的系统;5)按需代码。说到底,REST只是一种架构风格,而不是协议或标准。但这种新的风格(也许已经历史悠久?)对现有的以SOAP为代表的Web Service造成的冲击也是革命性的,因为它面向资源,甚至连服务也抽象成资源,因为它和HTTP紧密结合,因为它服务器无状态。

REST与SOAP的区别

  因为SOAP并不假定传输数据的下层协议,因此必须设计为能在各种协议上运行。即使绝大多数SOAP是运行在HTTP上,使用URI标识服务,SOAP也仅仅使用POST方法发送请求,用一个唯一的URI标识服务的入口。举一个图书馆在线查询管理系统为例,服务提供者必须为每一本书提供一个内部标识,然后可能定义一个listBooks操作来返回一系列图书,一个getBook操作来返回指定的图书,一个createBook操作来向数据库加入新增的图书,一个deleteBook操作来删除作废的图书,每个操作都有各自的参数,尤其是用内部标识来标识操作的图书。这种设计被诟病之处,在于deleteBook操作也要用POST方法来发送,而其实HTTP协议有更和逻辑的DELETE方法可用。

  REST正是这样设计的,REST为每一个资源(此处是图书)指定一个唯一的URI,而用HTTP的4种方法GET、POST、PUT、DELETE直观地表示获取、创建、更新和删除图书。同时图书集合也是和单本的图书不同的资源,如果用/books来代表图书列表,/books/ID来代表标识为ID的图书,那么对/books的GET操作就代表返回整个图书列表,对/books/ID的DELETE操作代表删除指定的图书,等等。

在将一个故事,相信能更好的理解他们的区别(人话描述版)

  九十年代初,通讯还不发达的时候,亲朋好友间想彼此联系下,大家想到的办法一定只能是"书信"·那我们一定会用到信封、邮票、还有我们的邮政叔叔,我们把这种方式用个词代替“通信”。

  同样道理,如今互联网的时代,要想彼此联系就不需要书信那么麻烦了,只需要有网络就可以跟世界各地的亲朋好友联系。旧时的书信方式我们可以理解为一种强制性的,必须要这么做的手段。

  换成现今网络这种方式,我们同样要遵循一个规定、约束,那就是“Http”协议,而Rest和Soap我们可以理解为信件和明信片,它们是建立在Http协议之上的两种通讯具体方式,区别在哪呢?

  以前我们可以选择喜好写信或者寄明信片,而Rest和Soap是针对不同的载体之间所选择的不同的通讯方式。实际上,Soap是建立在Http之下的一种软件程序之间的通讯协议,而Rest严格来说只是一种规范。

  写信我们要用到信纸,明信片就是一卡片,那对于Soap来说它的具体载体是xml格式的消息体。Rest的载体则有xml、jason、html文档。以前寄信件由邮政叔叔代劳,而互联网上的通讯传输的渠道则是由TCP协议完成。

总结:

  1. SOAP 和 REST 都是 HTTP 协议
  2. 请求协议
    • SOAP 主要是用 XML 格式开发送请求,服务器返回的数据也是 XML 格式的
    • REST 可以使用xml、json、html格式发送请求,服务器返回的数据也是多种格式的
  3. 请求方式
    • SOAP 只能使用 post 方式
    • REST 使用 get,post,put,delete 四种请求
  4. HTTP 是 SOAP 和 REST 的载体

本文参考:
作者:会吃饭的鱼
链接:https://www.jianshu.com/p/6c52719ab9b7

作者:MissQing
链接:https://www.cnblogs.com/MissQing/p/7240146.html

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值