多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 比较 SOAP 与 RESTful Web 服务 > 原文: [https://howtodoinjava.com/resteasy/comparing-soap-vs-restful-web-services/](https://howtodoinjava.com/resteasy/comparing-soap-vs-restful-web-services/) 尽管 **SOAP** 和 **RESTful Web 服务** – 都具有相同的目的,即基于 **SOA(面向服务的架构)**构建应用,但是它们在如何帮助实现最终输出的方式上,有着很大程度上不同。 让我们记下基于 SOAP 和 REST 的 API 之间最明显的**区别**: | SOAP | REST | | --- | --- | | SOAP 是基于 XML 的消息传递协议 | REST 不是协议而是建筑风格 | | SOAP 具有用于状态实现的规范 | REST 仅遵循无状态模型 | | 最少的工具/中间件是必需的。 仅需要 HTTP(主要是基于 HTTP)的支持 | URL 通常引用正在访问/删除/更新的资源 | | 定义良好的机制来描述接口,例如 WSDL + XSD,WS-Policy | 正式描述标准尚未广泛使用。 每个人都自己解释 | | 有效负载必须符合 SOAP 模式 | 有效负载无限制 | | 内置错误处理 | 尽管可以使用 HTTP 错误代码,但没有错误处理 | | SMTP 和 HTTP 都是有效的应用层协议,用作 SOAP 传输 | 绑定到 HTTP 传输模型 | | SOAP Web 服务完全忽略 Web 缓存机制 | RESTful Web 服务充分利用了 Web 缓存机制,因为它们基本上基于 URL。 | | 很难学 | 易于学习,因为每个人都了解 HTTP | | 通过 WS-SECURITY 对 SOAP 安全性进行了很好的标准化 | HTTP 协议层提供了安全性,例如基本认证和通过 TLS 的通信加密 | | 当您向外界发布复杂或可能会更改的 API 时,SOAP 将更加有用 | 除此之外,REST 通常是更好的选择 | 如果您知道这些差异,请随时添加。 它也会帮助其他人。 **祝您学习愉快!**