首页 > 其他分享 >REST 与 SOAP 之间的差异

REST 与 SOAP 之间的差异

时间:2023-04-12 12:33:13浏览次数:42  
标签:XML Web HTTP 差异 REST 格式 SOAP

本文主要探讨 REST 和 SOAP 之间的主要区别。 其实把他俩放一起讨论,就好像拿苹果和橘子对比一样,因为 SOAP 是一种基于 XML 的协议格式,而 REST 是一种架构风格。

REST 与 SOAP 之间的差异_REST

本文摘要

  • 什么是 REST ?
  • 什么是 SOAP ?
  • REST 和 SOAP 有何不同?

REST 和 SOAP

REST 和 SOAP 没有可比性。REST 是一种软件架构风格,而 SOAP 是一种消息传递格式。我们可以比较一下当前流行的 REST 和 SOAP 风格的实现方式:

  • RESTful 实现的示例:RESTful 基于 HTTP 协议,可以 JSON 为数据格式传递 RESTful API。
  • SOAP 实现的示例:SOAP 基于 XML 的简易协议,可使应用程序在 HTTP 之上进行信息交换。

在顶层,SOAP 限制消息的结构,而 REST 是一种专注于使用 HTTP 作为传输协议的架构方法。

  • SOAP的特殊性在于它是一种数据交换格式。对于 SOAP,它始终是 SOAP-XML,即 XML,它包含下列元素: - 必须的 SOAP 封装(envelope)—— 定义文档中使用的消息和命名空间的根元素 - 可选的 SOAP 标头(header)—— 包含消息属性,例如:安全信息或关于网络路由 - 必须的 SOAP 体块(body) —— 包含应用程序之间交换的消息, - 可选的 Fault 元素 —— 提供有关在处理此消息所发生错误的信息。请求和响应都必须符合 SOAP 结构。
  • REST 的特殊性是使用 HTTP 作为传输协议。它意味着充分利用 HTTP 提供的特性 —— 请求方法、请求头、响应、响应头等。

消息格式

  • 在 SOAP 中,需要使用 SOAP XML 格式进行请求和响应。
  • 在 REST 中则没有这种固定格式。我们可以基于 XML、JSON 或任何其他格式交换消息。JSON 是最流行的格式。

服务定义

  • SOAP 使用 WSDL(Web 服务描述语言),这是一种基于 XML 的语言,用于描述和访问 Web 服务。
  • REST 没有标准的服务定义语言。尽管 WADL 是最早提出的标准之一,但它并不是很流行。目前更为广泛使用和接受的是 Swagger 或 Open API

传输

SOAP 不对传输协议的类型强加任何限制。我们可以使用 HTTP Web 协议或 MQ,REST 最好使用 HTTP 传输协议。

易用性 RESTFful Web 服务通常比基于 SOAP 的 Web 服务更容易实现。

  • REST 通常使用更易于解析和处理的 JSON。除此之外,REST 不需要服务定义来提供 Web 服务。
  • SOAP 除了需要使用 WSDL 定义服务,还要在处理和解析 SOAP-XML 消息方面花费精力。

深入了解:

标签:XML,Web,HTTP,差异,REST,格式,SOAP
From: https://blog.51cto.com/u_15964010/6185454

相关文章

  • resttemplate绕过https认证
    publicclassRestTemplateConfig{publicstaticHttpComponentsClientHttpRequestFactorygenerateHttpRequestFactory()throwsNoSuchAlgorithmException,KeyManagementException,KeyStoreException{TrustStrategyacceptingTrustStrategy=......
  • ORACLE数据库中ORACLE_SID与INSTANCE_NAME的差异
    ORACLE数据库中ORACLE_SID与INSTANCE_NAME在概念和意义上有什么异同呢?下面简单来总结概况一下,很多时候,不少人都搞不清楚两者的异同,甚至认为两者是等价的。ORACLE_SID与INSTANCE_NAME的异同ORACLE_SID参数是操作系统的环境变量,用于和操作系统进行交互。也用于定义一些数据库参数......
  • HTTP接口风格就俩:RPC和RESTFul
    基于.NetCore开发博客项目StarBlog-(21)开始开发RESTFul接口 前言最近电脑坏了,开源项目的进度也受到一些影响这篇酝酿很久了,作为本系列第二部分(API接口开发)的第一篇,得想一个好的开头,想着想着就鸽了好久,索性不扯那么多了,直接开写吧~关于RESTFul网上很多相关的文章都要......
  • 软考高项第4版教程-差异点解析来啦(第18章)!
    继续高项信息系统项目管理师第4版教程的差异点解析,今天带来第18章的解析。估计还会有朋友问,上次解析到了第5章,这次怎么直接跳到了第18章呢?中间的章节不解析了吗?其实上次已经预报过了,这次在开头再解释下,咱们这次解析的重点在“差异点”3个字,我先把差异变化比较大的章节解析完成,再回......
  • AtCoder ABC286 C - Chinese Restaurant
    AtCoderABC286C-ChineseRestaurant题目描述有\(N\)个人从\(0\)开始编号,按逆时针顺序间隔均匀地坐在转盘周围。在开始时,第\(p_i\)盘菜在第\(i\)个人的前面。现在,你可以进行以下操作\(0\)次或多次。将转盘逆时针旋转\(\dfrac{1}{N}\)圈。也就是说,旋转前......
  • 使用 AutoRest 遇到的问题
    AutoRest提供读取swagger.json文档,然后生成客户端代码的功能。首先是AutoRest默认使用operationid作为生成对应接口请求方法的名称,而莫得swagger.json文档上面默认没有这个值,所以需要设置。然后就是asp.netcore支持多种请求格式,包括text/json,applicaiton/json等......
  • @Controller和@RestController的区别
    引言在Spring框架中,存在@Controller和@RestController这两个注解,相信很多人并不能很清晰地分辨它们。今天,我来说明下它们的作用和使用场景。1.@Controller说起@Controller,不得不先谈谈@Component注解。@Component注解是属于spring框架,它作用在类上,表明一个类会作为组件类,交......
  • goodFeaturesToTrack
    一、goodFeaturesToTrack1、过程:1)函数查找图像中或指定图像区域中最突出的角点(1)函数使用cornerMinEigenVal或cornerHarris计算每个源图像像素的角点质量度量。(2)函数执行非最大值抑制(保留3x3邻域中的局部最大值)。(3)最小特征值小于qualityLevel*maxx,yqualityMeasureMap(x,y)......
  • 【重要】Nginx模块Lua-Nginx-Module学习笔记(三)Nginx + Lua + Redis 已安装成功(非open
    一、目标使用Redis做分布式缓存;使用luaAPI来访问redis缓存;使用nginx向客户端提供服务,ngx_lua将lua嵌入到nginx,让nginx执行lua脚本,高并发,非阻塞的处理各种请求。url请求nginx服务器,然后lua查询redis,返回json数据。二、准备工作系统环境:Ubuntu14.0(64位)Redis服务安装:ap......
  • 【精选】Nginx负载均衡学习笔记(一)实现HTTP负载均衡和TCP负载均衡(官方和OpenResty两种
    说明:很简单一个在HTTP模块中,而另外一个和HTTP是并列的Stream模块(Nginx1.9.0支持)一、两个模块的最简单配置如下1、HTTP负载均衡:http{includemime.types;default_typeapplication/octet-stream;upstreamlive_node{server127.0.......