原文地址: https://blog.smartbear.com/apis/understanding-soap-and-rest-basics/
SOAP: Simple Object Access Protocol
REST: Representational State Transfer
SOAP 和 REST 是获取web service的2种方式。SOAP由Microsoft公司开发的,出现较早。REST是后期开发出来的,两者各有千秋,各有优缺点。
1. SOAP简介
SOAP可延展性很大。在最初的发布之后,微软向Internet工程任务组(IETF)提交了SOAP,在那里它被标准化了。SOAP是为了支持扩展而设计的,因此它具有与之相关的各种其他缩写和缩写,如ws-addressing、ws-policy、ws-security、ws-reliablemessaging、ws-atomictransaction和ws-remoteportlet。事实上,您可以在Web服务标准中找到这些标准的完整清单。但这也有一个弊端,那就是麻烦。有时候也许你只需要你感兴趣的信息。譬如: 在一个公共的网络里,WS-Security就不太需要了。
SOAP依赖于严格的XML格式。有的时候这个就很麻烦了,在某些编程语言里,你需要自己手动编写那些XML请求,这就免不了会有错误。但SOAP对于这些错误是不能容忍的。好消息是有些编程语言能帮我们减少这些错误,比如.net。与SOAP紧密相关的还有WSDL(web service description language).WSDL 定义了web service是怎么工作的,他的IDE 能帮我们很多忙。所以SOAP到底好不好用,与你选择的编程语言相关。
SOAP的一个重要特征就是对错误的处理。如果你发出的请求有问题,则返回的应答包含错误信息。这样你就可以根据这个信息来定位错误。这个相当重要,不然你想想,如果自己不是这个web service的拥有者,你就不知道哪里错了。
SOAP的另一个特点: 不一定要使用HTTP,你可以使用SMTP。
2. REST 简介
REST是轻量级的,很多时候它依赖于一个URL,他可以使用HTTP的GET, POST, PUT, DELETE来展开。
REST不需要XML,基于REST的webservice 他的输出值是csv, json, rss的格式。
3. SOAP VS REST
SOAP是重量级的,相比REST它有如下的优点:
- 语言,平台,传输独立(REST依赖于HTTP)
- 适应于在分布式的环境(REST只能直接的点到点传输)
- 标准
- 以WS标准的形式提供重要的预构建可扩展性
- 有内置错误处理机制
可以开展自动化
REST是轻量级的,更灵活,相比SOAP它有如下优点:
- 不需要昂贵的工具,就可以完成web service 的交互
- 学习起来更简单
- 高效(SOAP对所有信息使用XML格式,REST可以使用更简便的格式)
- 快速,不需要广泛的处理
- 在设计学上来看,更接近与web技术。