您想将您的应用程序连接到Instagram以使用特定主题标签重新发布图像,还是连接到 微博以便它可以自动创建帖子?或者,也许您想在您的网站上嵌入优酷视频?您可以使用应用程序编程接口(API)完成所有这些以及更多事情。API,如微信 API、微博API和抖音 API,为不同的小程序相互“对话”提供了一种安全和标准化的方式。这意味着,一个应用程序可以从另一个小程序中提取功能或数据,并使用它来增强自己的功能或用户体验。但是应用程序如何发出这些请求、处理它们并以对方理解的方式回答它们呢?这取决于API的构建方式。让成都小程序开发来看看下面两种最常见的方法。
SOAP代表简单对象访问协议,是一种高度严格且安全的构建API的方法,该API以XML格式对数据进行编码。REST代表Representational State Transfer,是一种更简单、更灵活的构建API的方法,可以传输各种格式的数据,包括XML以及纯文本、HTML和JSON。
SOAP是一个标准的通信协议系统,它使用XML技术来定义一个广泛的消息传递框架,该框架允许在分散的分布式环境中交换结构化信息。换句话说,SOAP允许运行在不同操作系统上的应用程序使用不同的技术和编程语言进行通信。
客户端可以使用SOAPAPI 从服务器创建、检索、更新或删除记录,例如密码、帐户、潜在客户和自定义对象。
另一方面,REST是一种架构风格,而不是一种协议。如上所述,它代表Representational State Transfer。这意味着,当客户端使用RESTAPI请求资源时,服务器会以标准化表示形式传回资源的当前状态。换句话说,RESTAPI接收对资源的请求并以客户端可以轻松解释的格式返回有关该资源的所有相关信息。
除了请求资源之外,客户端还可以使用RESTAPI通过HTTP方法在服务器上修改甚至添加新项目。
如需更深入的描述,请阅读REST API:它们的工作原理和您需要了解的内容。
现在我们已经更好地了解了SOAP和RESTAPI 的作用,让我们比较一下它们的安全措施和协议。
由于SOAP是一种消息传递协议,因此保护SOAPAPI主要集中在防止未经授权访问由SOAPAPI接收和发送的消息(以及这些消息中包含的用户信息)。防止未授权访问的主要防御措施是Web标准(WS)安全性,这是一组规范SOAP消息传递的机密性和身份验证过程的原则。符合WS Security的措施包括密码、XML加密和安全令牌,以及其他机制。
WS Security超越了传统的Web安全机制,例如HTTPS,HTTPS仅在发出请求的客户端与具有所请求数据的服务器或Web服务之间的传输过程中保护消息。另一方面,WS Security 在HTTPS连接之外保护消息,有时甚至在传输层之外。
它是如何做到这一点的呢?
SOAP消息要么包含保护它所需的信息,要么包含有关从何处获取保护它所需的信息的信息。SOAP消息还包含与处理其标头中指定的消息级安全性的协议和过程相关的信息。这意味着当 Web 服务端点收到SOAP消息时,它会验证标头中的安全信息以确保它没有被篡改。这就是为什么SOAP被称为具有“消息级安全性”的原因。
因为SOAP支持WS规范,如WS-Addressing、WS-Policy、WS-Security、WS-Federation、WS-ReliableMessaging、WS-Coordination、WS-AtomicTransaction和WS-RemotePortlets,SOAPAPI 非常适合内部数据传输和其他敏感任务——但对于使用每个人都可以免费使用的公共网络服务来说是不必要的,比如检索天气数据。我们将在后面的帖子中详细讨论何时使用SOAP与RESTAPI。
RESTAPI仅支持传统的Web安全机制,例如HTTPS。这意味着当应用程序使用HTTPS从RESTAPI发送和检索消息时,该消息仅针对HTTPS连接是安全的。这意味着,消息仅在客户端和服务之间的传输过程中是安全的。这对于公共网络服务来说很好,但对于更敏感的数据传输来说可能还不够。
由于RESTAPI没有SOAP所具有的内置安全功能或扩展,因此它们的安全性取决于API本身的设计。RESTAPI可以设计为具有特定的安全机制,以确保只有经过身份验证和授权的用户才能访问它们。常见的RESTAPI身份验证方法有HTTP基本身份验证、JSON Web令牌、OAuth和API密钥。
RESTAPI还应该有详细的规范,并拒绝任何在其HTTP标头中没有正确声明的请求,例如,或以其他方式遵循其规范。这将有助于保护底层Web应用程序免受格式错误和恶意输入的影响,即使在客户端获得访问权限之后也是如此。
让我们比较一些对SOAPAPI和RESTAPI 的请求和响应示例。下面的示例分别基于 QACompleteSOAPAPI和RESTAPI。QAComplete是SmartBear推出的综合性小程序测试管理工具。
QACompleteSOAP请求是对Web服务端点URL发出的HTTP POST请求。客户端和服务器在 HTTP 请求和响应的正文中以XML格式交换数据。
此SOAPAPI仅接受HTTP POST请求,但它也支持所有项目类型的几种常见操作,包括添加、删除、加载、LoadByCriteria和更新。您将看到这些操作,而不是HTTP动词GET、PUT、PATCH和DELETE。
当您决定在SOAP和REST之间构建API时,一般的经验法则是:如果您想要标准化和增强的安全性,请使用SOAP。如果您想要灵活性和效率,请使用REST。
有关何时使用SOAP与REST的具体用例,请查看下表。
开发私有API,尤其适用于大型企业:由于SOAP允许数据在分散、分布式环境中传输,并且具有许多Web 安全机制,因此非常适合企业解决方案。
使用有状态操作:与对RESTAPI的调用不同,对SOAPAPI的调用是有状态的,这意味着服务器存储有关客户端的信息并在一系列请求或操作链中使用该信息。虽然这需要更多的服务器资源和带宽,但如果执行重复性或链式任务(如银行转账),这一点很重要。
使用HTTP以外的底层传输协议:SOAP独立于底层传输协议,因此您不必使用HTTP。相反,您可以使用SMTP(简单邮件传输协议)或JMS(Java 消息服务)或其他传输协议,具体取决于您的应用程序。
开发公共API:RESTAPI被认为比SOAPAPI更易于使用和采用,这使它们成为创建公共Web服务的理想选择。REST 还缺少一些SOAP具有的内置安全功能 — 但在处理公共数据和服务时它们不是必需的。
使用有限的服务器资源和带宽:所有对RESTAPI的调用都必须是无状态的,这意味着每个交互都是独立的,因此每个请求和响应都提供完成该交互所需的所有信息。由于服务器将每个请求都解释为全新的,因此服务器不会存储有关过去请求的信息。这大大减少了所需的服务器内存量并提高了性能,因为服务器在满足请求时不需要采取额外的操作或检索过去的数据。此外,由于REST是无状态的,因此可以缓存数据,这也节省了服务器资源和带宽。最后,RESTAPI可以使用不同的数据格式,例如比XML更轻量级的JSON。这使得它们比大多数SOAPAPI更快、更高效。
构建移动应用程序:由于REST轻量、高效、无状态且可缓存,因此非常适合构建移动应用程序。
成都小程序开发构建API没有黄金法则。在构建API时在SOAP还是REST之间做出选择取决于多种因素,包括您使用的编程语言以及构建它需要多少时间。