SOAP: 简单对象访问协议。是交换数据的一种协议。消息采用xml格式,使用http协议。
REST: 是传输对象的一种简单方法,rest没有定义太多的标准,传输的对象可以使json格式,xml格式,甚至是普通文本。相对于soap来说是轻量级的。
soap和rest的区别如下的图片可以说明:
解释一下,soap图意思是,即使你传一个简单的信息,也需要按照soap定义的各种标准,包装成xml再进行传输,过于复杂了。
(原文请参考http://stackoverflow.com/questions/209905/rest-and-soap)
soap是一个严格定义的信息交换协议,用于web service调用和返回封装成机器可读的格式化数据。soap使用xml数据格式,定义了一系列复杂的标签,以描述调用的远程过程,参数,返回值和错误信息等等,随着需要的增长,又不得不增加协议以支持协议的安全性,这使得soap变得异常庞大。另一方面,各个服务器都基于这个协议推出自己的api,这就导致了wsdl的诞生。wsdl也使用xml数据格式,描述了服务器提供什么样的服务,访问点是什么,访问的接口规范等等。这样一来,使用web service的核心变成:获取描述服务的wsdl,根据wsdl构建一条格式化的soap请求发给服务器,然后接收一条同样格式的soap应答,再根据wsdl解码。
rest说到底,并不是协议或规范,而是一种架构风格。它是面向资源的,甚至将服务也抽象为一种资源。它和http紧密结合,因为它服务器无状态。rest简单而直观,用http请求的信息指明资源的表现形式,用http的错误机制返回访问资源的错误。由此带来的好处就是构建成本降低了。用uri定位资源,这利用了已经成熟的技术,不需要再在服务端开发一套资源访问的机制。只要简单的配置服务器就能控制资源的访问权限,例如通过禁止非GET访问将资源设为只读。