API 技术

Comments

技术概述

API 的概念和实现都已不是新鲜事物;软件工程师创建和使用 API 来实现组件交互已有几十年的历史。但是,API 经济的发展是由通常描述为 Web API 的服务所驱动的。 Web API 是一种 Web 服务实现,具有以下约定:

  • 通常实现它们来公开外部服务接口,供开发人员编写用户应用程序。
  • 它们的实现基于 RESTful 原则。
  • 它们不会实现基于契约的定义(比如 SOAP)和 Web 服务标准来定义接口。
  • 它们使用 JSON 或 XML 对有效负载进行编码。

理解为什么出现这些约定很重要,因为它们为您在定义 Web API 时制定的设计决策提供了背景。

要了解更多信息,请阅读 此处的红皮书。

REST 和 SOAP

许多有关 Web API 的讨论都在争论 REST 与 SOAP 有何区别。为了帮助您了解这一争论背景,阐明为何 REST 成为实现 Web API 的流行风格很重要。

REST(具象状态传输)体现在大多数可供应用开发人员使用的 Web API 中。它最初是由 Roy Fielding 在其论文“基于网络的软件架构的架构风格和设计”中提出的,随后万维网联盟(W3C) 在 HTTP/1.1 中规范化了 REST 的许多元素。这篇论文概括了一种框架,通过该框架,可以在软件架构背景中了解软件,文中还概括了此框架与基于网络的应用架构(比如万维网)的特定关系。该论文还介绍了 REST 作为此方法的一个示例。

REST 示例描述了一些关键原则(Fielding 将它们描述为约束),这些原则旨在用各种公式来阐述所制定的软件工程设计决策。这些原则描绘了如今使用的大部分基于 REST 的 API 的特征:

  • 客户端 - 服务器关系的优先顺序
  • 需要无状态通信
  • 实现缓存约束来提高网络通信效率
  • 通过资源和表示等标准化的数据元素来使用统一的接口

对于 REST 模式的崛起,您可能会问的问题是,为什么它成为了 Web API 的流行风格?简言之,因为有关此主题的信息已有很多,这里将简要说明以下几个原因:

  • 人们的共识是,REST 为 SOAP 等面向服务的机制提供了一种轻量型的替代方案。它避开了 SOAP/WSDL 创建的基于协议的接口,专注于结合使用资源(即 URI)和 HTTP 方法定义的离散对象。这对 Web API 的原始目标受众很有吸引力。
  • 使用 REST 创建 Web API 的增多也伴随着移动应用的增长。Android 和 iOS 都无法原生地支持 SOAP,但它们都支持用于实现 REST 的构建块。
  • REST 是使用分布式架构来表达的,该架构设定了 REST 的 HTTP 上下文。出于这个原因,很容易使用那些实现类似 CRUD 的语义所需的许多功能。这使得 API 开发者能够集中精力为对象配置资源,而不会给接口带来表达操作所需的冗长措辞。例如,在使用 SOAP 时,客户记录上的每个 GET、POST、PUT 和 DELETE 都需要在 WSDL 文档中定义为单个操作,借助 REST,接口对于每个方法是一致的。
  • REST 允许使用资源(表达为 URI)对对象进行精细控制,这也提高了与服务器通信的效率(显然,这在移动设备上实现通信时很重要)。API 的用户能够选择更新此对象的所有或部分内容。实际接口不会发生改变,只有用户选择更新的部分会发生改变。

上面概括的原因设定了在创建 Web API 时制定选择使用 REST 的设计决策的背景,因为 REST 满足了使用现有技术(比如 SOAP)无法满足的具体需求。

但是,REST 不会让 SOAP 的使用变得多余。许多 Web API 都实现了 SOAP,而且 SOAP 将继续是企业服务集成的重要构建块,特别是在实现 SOA 的组织中。在这些情况下,Web API 和 REST 的作用之一是为现有服务提供补充,允许以有意义的方式向外部用户公开服务。

您应该在解决特定需求的背景下制定决策,而不是基于单纯的技术优势。

XML 和 JSON

人们开始越来越多地采用 JavaScript 对象表示法 (JSON) 作为表示资源的机制,这进一步推动了 REST 的发展。与 REST 一样,这种发展是有机的,而且有多种驱动因素:

移动应用促进了 Web API 的采用,而且需要在受限的通信链路上传输紧凑的有效负载 Web 开发者社区使用了 Web API,而且这个受众群体能够与 JSON 编码的数据产生共鸣。但是,由于以下因素,XML 仍是一个受欢迎的选择:

  • 对 XML 的熟悉使一些人习惯于使用它。
  • JSON 模式最近才开始成为一项标准,而且有一些解析器实现了对 XML 模式的支持来使用它。
  • XML 能够与具有 SOA 背景而且可能熟悉使用 XML 编码的 SOAP 负载的开发人员产生共鸣。

使用 JSON 与使用 XML 没有天壤之别。根据目标受众,您的设计决策可以支持一种、两种或者甚至其他格式。

要了解更多信息,请阅读此处的红皮书。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=1035332
ArticleTitle=API 技术
publish-date=07252016