SOAP是一个有状态的协议吗?REST真的是无状态的吗?如何使用REST存储数据



SOAP被设计成有状态的吗?如何到达?SOAP使用RPC,那么在哪里存储数据呢?

REST被设计成无状态的吗?是否可以将数据存储在JSON中?这样不对吗?

感谢

REST是设计为无状态的吗?

是的,确实如此——但Fielding准确地描述了无状态在REST:上下文中的含义

通信本质上必须是无状态的,就像第3.4.3节(图5-3(的客户端-无状态服务器(CSS(风格一样,这样从客户端到服务器的每个请求都必须包含理解请求所需的所有信息,并且不能利用服务器上存储的任何上下文。因此,会话状态完全保留在客户端上。

换句话说,要正确解释请求,服务器不需要记住以前的任何请求。

例如,将HTTP(其中凭据是请求元数据的一部分(与FTP(其中凭据与RETR命令分开发送(进行对比。

将SOAP与REST进行比较不太合适,因为SOAP是一种基于XML的协议,而REST是一种体系结构风格,根据定义,它没有被引入特定的技术。

在任何情况下,REST的常见用法都是通过http,就像SOAP一样,而REST与json和http的常见用法只是一种非常适合web开发和机器对机器通信的舒适实现,因为几乎所有现代编程语言都非常支持json。

说SOAP绝对是无状态的!。当我们用soap启动web服务调用时,我们用xml创建一个soap信封,并在http通道上发送,默认情况下,http通道是无状态的。

在接近SOAP的几年里,许多其他可以与SOAP一起使用的协议可以为协议添加一些功能,即众所周知的WS-*。BPEL值得讨论,它是SOAP编排最重要的标准。即使在我的经验中使用BPEL,引擎提供SOAP web服务以创建"状态完整"的web服务,BPEL流程通过SOAP公开的事实也与SOAP无关。BPEL就是BPEL,SOAP就是SOAP是两个分开的东西。

说,是的,REST是一种设计上无状态的架构风格,它特别适合与http一起使用,但即使是soap也是一种使用类似http的传输层的无状态协议。

对于问题的存储数据部分,存储数据是应用程序关注的问题。当然,您可以在像SOAP web服务这样的rest api中传递数据。对于SOAPWeb服务,您通常会在SOAP信封的主体上发布数据。在REST服务中,通常您正在创建/更新资源,因此,使用REST的经典http实现,您将执行POST(创建(/PUT(更新所有资源(/PATCH(只更新一段资源(在http请求的主体中传递数据。当然,不要忘记application/json上的Content-Typehttp头。

我希望它能帮助你

最新更新