SOAP
SOAP是一种协议。
SOAP是Simple Object Access Protocol的缩写,用于传输小规模数据。SOAP消息为XML格式,通常以HTTP协议发送(亦通过TCP/IP)。
由于采用了XML格式,SOAP需要定义数据的类型与功能。如果要传输二进制数据,则必须先以base64格式对其编码。WSDL、XSDs、WS-Addressing等协议或技术都与之相关。
SOAP由于可以同时控制服务器与客户端的行为,因此经常被用于内部网络API。
REST
REST是一种传输架构,与协议无关。
REST是Representational State Transfer的缩写,可以较为灵活地在客户端与服务器之间传输数据,格式可以是JSON、XML甚至纯文本,机制较SOAP更为轻量。
REST采用通常的HTTP方法(如HTTP GET、HTTP PUT等)传输,而无需借助XML。只要框架支持HTTP,就能实现REST。二进制数据也可以通过请求传输。不过需要注意,REST并没有与CRUD方法一一对应。
REST由于简单轻量,且格式更为灵活,不少公网API都采用了这种方式。
在选择SOAP还是REST时,可以考虑以下几点:
REST的优势:
- 实现简单
- 学习曲线平缓
- 传输效率更高(无需定义XML)
- 传输速度更快(没有引入额外的处理)
- 与其他一些网络技术在设计理念上有共通之处
REST的劣势:
- 是否需要独立于平台、框架或协议(REST依赖HTTP)
- 是否需要在分布式企业环境中运作(REST是直接的点对点通信)
- 是否需要限定传输格式
- 是否需要使用WS标准提供的扩展功能(如项目已有的代码或接口)
- 是否需要利用内建的错误处理机制
- 是否希望利用语言或框架自带的自动化机制来创建接口