Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关于 REST API 和 SOAP,你知道多少?

关于 REST API 和 SOAP,你知道多少?

作者头像
shengjk1
发布于 2025-05-16 04:53:48
发布于 2025-05-16 04:53:48
400
举报
文章被收录于专栏:码字搬砖码字搬砖

背景

通过上篇文章 关于 REST API,你了解多少?,我们知道REST API是在Web应用程序的发展过程中产生的。在Web应用程序的早期阶段,应用程序之间的通信主要是通过SOAP(Simple Object Access Protocol)和XML-RPC(XML Remote Procedure Call)等协议来实现的。这些协议使用XML格式来传输数据,但它们的设计复杂、繁琐,不易于使用和扩展。

在这种情况下,Roy Fielding在2000年提出了REST(Representational State Transfer)的概念,作为一种新的Web应用程序架构风格。REST使用HTTP协议作为通信协议,使用URI(Uniform Resource Identifier)来标识资源,使用HTTP请求方法(如GET、POST、PUT、DELETE等)来操作资源,并使用HTTP状态码来表示操作结果。REST的设计风格简单、灵活、可扩展,因此在Web应用程序中得到了广泛的应用。

随着Web应用程序的不断发展,REST API已经成为现代Web应用程序的重要组成部分。它可以提高应用程序的互操作性、灵活性和可伸缩性,从而为用户提供更好的体验。那么 REST API 和 SOAP 有什么区别呢?

REST VS SOAP

SOAP全称 Simple Object Access Protocol,定义了一个强类型的消息传递框架,该框架严重依赖于 XML 和 schemas。

REST 全称 REpresentational State Transfer 是一种架构风格,它利用现有且广泛采用的技术,特别是 HTTP,并且不创建任何新标准。 REST 可以将数据结构化为 XML、YAML 或任何其他机器可读格式,但通常首选 JSON

有无状态

SOAP

SOAP 是一种有状态的协议。在 SOAP 中,每个请求都需要包含一些上下文信息,例如会话标识符、安全令牌等,这些信息需要在每个请求中进行传递。因此,SOAP 需要维护请求之间的状态信息。

举一个具体的例子,假设有一个基于 SOAP 的在线购物系统,用户在登录后可以浏览商品、添加商品到购物车、结算等操作。在这个过程中,服务器需要维护用户的登录状态、购物车信息等上下文信息,以便在后续的请求中进行验证和处理。如果用户在登录后的某个时刻断开了连接,那么服务器需要在一定时间内保留用户的上下文信息,以便用户重新连接后可以继续进行之前的操作。这就是 SOAP 的有状态特性体现的一个例子。

REST

在 REST 中,为了实现无状态的原则,服务器不会维护客户端的会话状态。相反,客户端会在每个请求中包含足够的信息,以便服务器可以理解该请求,而不需要依赖之前的请求或会话状态。

因此,在上述的例子中,如果使用 REST API,服务器不会维护客户端的会话状态,而是在每个请求中包含足够的信息,以便服务器可以理解该请求。例如,在用户登录后,服务器可以返回一个包含访问令牌的响应,客户端可以在后续的请求中包含该访问令牌,以便服务器可以验证客户端的身份和权限。客户端可以在每个请求中包含购物车信息,以便服务器可以处理购物车相关的操作。如果客户端在某个时刻断开连接,那么客户端可以在重新连接后重新发送之前的请求,以便服务器可以继续处理之前的操作。这种方式下,服务器不需要维护客户端的会话状态,从而实现了 REST 的无状态原则。

总结

SOAP 和 REST 是两种不同的架构风格,它们在很多方面都有所不同,其中一个重要的区别就是状态管理。

SOAP 是一种基于 XML 的协议,它使用 SOAP 消息来传输数据。在 SOAP 中,服务端通常会维护客户端的状态信息,因为 SOAP 协议本身并不提供状态管理机制。因此,服务端需要使用一些技术手段来维护客户端的状态信息,如使用 Session 或者 Cookie 等机制。

相比之下,REST 是一种基于 HTTP 协议的架构风格,它使用 HTTP 请求和响应来传输数据。在 REST 中,客户端通常会维护自己的状态信息,因为 HTTP 协议本身就提供了状态管理机制,如使用 Cookie 或者 Token 等机制。因此,REST API 通常是无状态的,服务端不需要维护客户端的状态信息。

总的来说,SOAP 和 REST 在状态管理方面的区别主要是由它们所采用的协议和架构风格所决定的。SOAP 使用的是基于 XML 的协议,而 REST 使用的是基于 HTTP 的协议( REST不限制协议,通常是 HTTP),因此它们在状态管理方面有所不同。

其他

HTTP

HTTP(超文本传输协议)是一种应用层协议,用于在客户端和服务器之间传输数据。HTTP 协议通信流程通常如下:

  1. 客户端向服务器发送 HTTP 请求报文,请求访问某个资源。请求报文包括请求行、请求头和请求体等部分。
  2. 服务器收到请求报文后,解析出请求行、请求头和请求体等部分,并进行相应的处理。处理结果通常包括响应状态码、响应头和响应体等部分。
  3. 服务器将处理结果封装成 HTTP 响应报文,并将其作为 TCP 数据包发送给客户端。响应报文包括状态行、响应头和响应体等部分。
  4. 客户端收到响应报文后,解析出状态行、响应头和响应体等部分,并进行相应的处理。处理结果通常包括显示页面内容、保存文件等操作。

在这个过程中,客户端和服务器之间的通信是基于 TCP 协议的。在建立 TCP 连接之前,客户端需要通过 DNS 解析获取服务器的 IP 地址,然后使用服务器的 IP 地址和端口号来建立 TCP 连接。在 TCP 连接建立之后,客户端和服务器之间就可以通过 HTTP 协议来进行数据传输了。

需要注意的是,HTTP 协议是一种无状态协议,即每个请求和响应之间是相互独立的,服务器不会保存客户端的状态信息。为了解决这个问题,HTTP 协议引入了 Cookie 和 Session 等机制,用于在客户端和服务器之间保存状态信息。

SOAP

SOAP(简单对象访问协议)是一种基于 XML 的协议,用于在客户端和服务器之间传输数据。SOAP 协议通信流程通常如下:

  1. 客户端向服务器发送 HTTP 请求报文,请求调用某个 SOAP 服务。请求报文中包含 SOAP 消息,即要传输的数据。
  2. 服务器收到请求报文后,解析出 SOAP 消息,并进行相应的处理。处理结果通常包括生成响应 SOAP 消息,即要返回给客户端的数据。
  3. 服务器将响应 SOAP 消息封装成 HTTP 响应报文,并将其作为 TCP 数据包发送给客户端。
  4. 客户端收到响应报文后,解析出响应 SOAP 消息,并进行相应的处理。处理结果通常包括显示页面内容、保存文件等操作。

在这个过程中,客户端和服务器之间的通信是基于 HTTP 协议的。客户端向服务器发送的请求报文中包含 SOAP 消息,即要传输的数据。服务器收到请求报文后,解析出 SOAP 消息,并进行相应的处理。处理结果通常包括生成响应 SOAP 消息,即要返回给客户端的数据。服务器将响应 SOAP 消息封装成 HTTP 响应报文,并将其作为 TCP 数据包发送给客户端。客户端收到响应报文后,解析出响应 SOAP 消息,并进行相应的处理。

需要注意的是,SOAP 协议本身并不关心传输协议的具体实现,因此可以使用多种传输协议来传输 SOAP 消息,如 HTTP、SMTP、FTP 等。但是,由于 HTTP 协议广泛应用于互联网上,因此在实际应用中,SOAP 协议通常使用 HTTP 协议作为传输协议。

关于三次握手

HTTP

HTTP 是一种基于 TCP 协议的应用层协议,而 TCP 协议确实是通过三次握手来建立连接的。

在 TCP 协议中,客户端和服务器之间需要进行三次握手来建立连接。具体过程如下:

  1. 客户端向服务器发送 SYN 报文,表示请求建立连接。
  2. 服务器收到 SYN 报文后,向客户端发送 SYN-ACK 报文,表示确认请求,并请求建立连接。
  3. 客户端收到 SYN-ACK 报文后,向服务器发送 ACK 报文,表示确认建立连接。

在建立连接后,客户端和服务器之间可以进行数据传输。在 HTTP 协议中,客户端向服务器发送请求报文,服务器收到请求报文后返回响应报文,然后关闭连接。因此,HTTP 协议并不需要进行三次握手来建立连接,但是它依赖于 TCP 协议来建立可靠的连接。

SOAP

SOAP 协议本身并不需要进行三次握手来建立连接。SOAP 协议通常使用 HTTP 或 HTTPS 作为传输协议,而 HTTP 协议是基于 TCP 协议的,因此在使用 HTTP 作为传输协议时,需要进行三次握手来建立 TCP 连接。

在使用 SOAP 协议时,客户端和服务器之间的通信流程通常如下:

  1. 客户端向服务器发送 HTTP 请求报文,请求调用某个 SOAP 服务。
  2. 服务器收到请求报文后,解析出 SOAP 消息,并进行相应的处理。
  3. 服务器将处理结果封装成 SOAP 响应消息,并将其作为 HTTP 响应报文发送给客户端。
  4. 客户端收到响应报文后,解析出 SOAP 响应消息,并进行相应的处理。

在这个过程中,客户端和服务器之间的 TCP 连接是由 HTTP 协议来管理的,因此需要进行三次握手来建立连接。但是,SOAP 协议本身并不需要进行三次握手,它只是一种消息格式和传输协议规范,用于在客户端和服务器之间进行通信。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
TCP/IP协议族(一) HTTP简介、请求方法与响应状态码
接下来想系统的回顾一下TCP/IP协议族的相关东西,当然这些东西大部分是在大学的时候学过的,但是那句话,基础的东西还是要不时的回顾回顾的。接下来的几篇博客都是关于TCP/IP协议族的,本篇博客就先简单的聊一下TCP/IP协议族,然后聊一下HTTP协议,然后再聊一下SSL上的HTTP(也就是HTTPS)了。当然TCP/IP协议族是个老生常谈的话题,网络上关于该内容的文章一抓一大把呢,但是鉴于其重要性,还是有必要系统的总结一下的。 一、TCP/IP协议组简述 在聊HTTP与HTTPS之前呢,我们先简单的聊一下T
lizelu
2018/01/11
1.5K0
TCP/IP协议族(一) HTTP简介、请求方法与响应状态码
图解从 URL 到网页通信原理
互联网的原始目的,就是为了传输文本(文本对话)。那我们使用浏览器发送请求后页面是如何呈现在我们面前的呢? 接下来由图片介绍下URL到呈现页面的过程。
芋道源码
2019/10/29
9820
http和https
http:超文本传输协议,是互联网上应用很广泛的一个网络协议。它负责完成客户端到服务端的一系列操作,专门用来传输HTML的超媒体文档等web内容。他是基于TCP协议的应用层协议。http协议是以明文方式发送信息的,所以安全层很低。
Cloud-Cloudys
2020/07/06
6580
解析一次完整的HTTP请求与响应
图片来自:理解Http请求与响应http://android.jobbole.com/85218/
ZhangXianSheng
2019/05/28
1.7K0
网络编程基石课 大话网络协议,探究通信奥秘-基础指南
HTTP(HyperText Transfer Protocol)是用于在客户端和服务器之间传输超文本数据的协议,主要用于 Web 浏览器与 Web 服务器之间的通信。HTTP 是一个无状态的、基于请求-响应的协议,运行在 TCP/IP 协议之上。
用户11190134
2024/07/01
1160
从浏览器输入网址回车到看到页面过程到底经历了什么?
#前言:从浏览器输入网址到回车看到页面的过程,面试逃不掉的一个问题,我们知道从浏览器输入网址到看到页面主要是涉及DNS解析,TCP三次握手,请求报文,响应报文,TCP4次挥手。
老油条IT记
2020/08/13
5280
从浏览器输入网址回车到看到页面过程到底经历了什么?
http协议
当客户端和服务器通过三次握手建立了TCP连接以后,当数据传送完毕,肯定是要断开TCP连接的啊。那对于TCP的断开连接,这里就有了神秘的“四次分手”。
愤怒的小鸟
2021/01/06
7400
深入解析HTTP请求:了解请求特征与报文格式的关键秘密
在上一章节中,我们详细探讨了超文本传输协议(HTTP)的基本概念,并且延伸讨论了HTTP请求响应的基本流程。在这个过程中,浏览器首先通过DNS解析来确定要访问的服务器的IP地址,然后与服务器建立起HTTP连接。接下来,浏览器会向服务器发送HTTP请求报文,而服务器则会解析该请求报文,并返回包含所请求资源的HTTP响应报文。
努力的小雨
2023/11/28
4800
计算机网络知识(TCP连接,TCP/UDP区别,HTTP与HTTPS,Socket原理等等)
1、网络七层协议包含,物理层、数据链路层、网络层(ip协议)、传输层(TCP传输控制协议、UDP用户数据报协议)、会话层、表示层、应用层(http协议)。是一个提供的概念架构协议。
别先生
2019/12/20
2.9K0
计算机网络知识(TCP连接,TCP/UDP区别,HTTP与HTTPS,Socket原理等等)
【前端面试题】11—26道HTTP和HTTPS的面试题(附答案)
Web前端就是当用户在浏览器地址栏中输入一行字母看到的页面结果。然而,从输入字母到看到页面中都发生了什么,数据是怎么得到的?这些都离不开HTTP/HTTPS。
前端达人
2021/04/01
3K0
物联网传输协议 - REST/HTTP
在繁杂的物联网应用中,如何根据自己的业务需求,来选择合适且高效的应用层通信传输协议。是一个复杂且需要知识储备的事情。
拿我格子衫来
2022/01/24
7150
物联网传输协议 - REST/HTTP
图解Http协议
泥瓦匠记得和左潇龙【博客园】上次聊天时,龙哥问了个Session的问题。我当时的理解就是云里雾里,先从Http协议理解开始吧。
二哥聊运营工具
2021/12/17
5740
图解Http协议
你有REST Style吗
通过标题你应该已经知道了,我们接下来要学习一下如何使用Spring MVC构建RESTful接口。不过,在学习RESTful接口之前,我们需要先了解一些关于HTTP的知识。
愿天堂没有BUG
2022/10/28
1.8K0
你有REST Style吗
常问的计算机网络你知道吗
S:客户端的发送能力没问题 C:服务端的接收能力没问题 以及发送能力没问题 S:客户端接收能力没问题
zhouzhouya
2023/10/26
2360
http详解笔记
http,(HyperText Transfer Protocol),超文本传输协议,亦成为超文本转移协议
忧愁的chafry
2022/10/25
3320
http详解笔记
HTTP协议
该版本只有一个命令GET;没有HEADER等描述数据的信息; 服务器发送完毕,就关闭TCP连接。
木可大大
2018/07/25
3970
HTTP协议
【Java核心面试宝典】Day19、你猜HTTP协议会有什么面试题?
HTTP和HTTPS大家都知道吧?那你知道他们的连接方式、区别、加密方式等等吗?那今天这篇我就带大家来总结一下这其中会有哪些常见的面试题呢?
灰小猿
2021/09/23
3730
http协议学习
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它是基于 TCP 协议的应用层传输协议。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
薛定喵君
2022/09/08
4240
http协议学习
搞定计算机网络,这些问题还没有我答不出来的!
通信协议(communications protocol)是指双方实体完成通信或服务所必须遵循的规则和约定。通过通信信道和设备互连起来的多个不同地理位置的数据通信系统,要使其能协同工作实现信息交换和资源共享,它们之间必须具有共同的语言。交流什么、怎样交流及何时交流,都必须遵循某种互相都能接受的规则。这个规则就是通信协议。
cxuan
2020/11/23
7780
搞定计算机网络,这些问题还没有我答不出来的!
计算机网络经典20问!
计算机网络体系大致分为三种,OSI七层模型、TCP/IP四层模型和五层模型。一般面试的时候考察比较多的是五层模型。
程序员大彬
2021/10/04
3470
计算机网络经典20问!
相关推荐
TCP/IP协议族(一) HTTP简介、请求方法与响应状态码
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档