博客

掌握 API 架构: API 基础知识

拜伦·麦克诺特缩略图
拜伦·麦克诺特
2022 年 12 月 5 日发布


application程序编程接口 (API) 非常流行。

欢呼

虽然 API 并不是新鲜事物,但最近出现的一些现象(例如新冠肺炎期间数字化转型的加速、软件集成的增强以及为云重新平台化遗留应用程序的努力)导致了API 的不断蔓延——影响了组织为在现代数字经济中取得成功而做出的管理、安全甚至架构选择。

从本质上来说,API 可以代表机器的崛起。 只不过,幸运的是,人类仍然可以控制它们的建造、管理和安全(至少目前如此)。

机器人

从根本上讲,用“API 语言”来表达,消费者通常通过由各种标准、模式和规范组成的统一接口向生产者发送查询或请求。

例如,国家气象局(生产者)包含每日天气数据。 您手机上的天气应用程序(消费者)通过WeatherKit REST API调用(或者更具体地说是查询)该系统,然后通过天气应用程序用户界面呈现数据。 虽然这是一个拥有数百万用户的流行应用程序的简单示例,但值得注意的是,机器对机器通信占据了现代数字体验流量的最大份额,并且它由 API 提供支持。

狮子

API 具有许多可以转化为商业价值的技术优势:

技术优势 商业价值
抽象 Web 应用程序的底层实现。 组织可以快速部署移动应用程序和基于微服务的架构。
指定类型,以便开发人员可以通过工具实现 API 消费者。 领导者可以优化开发流程,以加快产品上市时间。
定义语义/行为来模拟一致且可预测的信息交换。 合作伙伴可以开发第三方集成并将其货币化。

在谈到 API 的实现时,有许多需要考虑的事项。 具体而言,关于建模、版本控制和契约测试,有助于解耦依赖关系并确保设计、构建和维护期间的互操作性。

考虑 描述 益处
造型 表示和构建信息交换的语义或行为。 简化分布式架构的管理。
版本控制 整个 API 生命周期的发布和维护的治理策略。 最大程度的可用性和向后兼容性。
合同测试 定义消费者和生产者之间的互动和预期反应。 与第三方业务集成的确定性交互。

构建、管理和保护 API 的方法没有对错之分。事实上,当 API 开始激增时,就有必要对 API 的形状和结构进行标准化,以便大规模使用它们。 输入OpenAPI计划和由此产生的 OpenAPI 规范 (OAS)。 Swagger是 OpenAPI 规范的原始参考实现,现在大多数工具都已集中使用 OpenAPI,而 OpenAPI 仍然保持着其 swagger(哈!)

事实上,可以使用多种标准、模式和规范来构建 API。 例如, RESTful表示、 gRPC服务和GraphQL模式的连接。

执行 概述 好处 何时使用


表示状态传输 (REST) 提供了一种轻量级架构模型来描述统一接口,最常见的应用是使用 HTTP 作为底层传输协议。

REST 是迄今为止基于 API 的架构中部署最广泛的实现。

Postman 2022 API 状态报告

  • REST 有一些非常基本的规则,进入门槛低且具有强大的领域模型,因此实现起来相对简单。
  • 作为一个分层的系统,REST接口背后系统的复杂性被抽象出来。 例如,消费者不知道他们正在与 Web 服务背后的数据库系统进行交互。
  • REST 对内容类型(包括 JSON 和 YAML)有灵活的支持。
  • 当 OpenAPI 规范足以与消费者共享 API 的形状和结构时。
  • 当需要根据 HTTP 标头动态确定缓存时,因为从生产者到消费者的请求默认是无状态的。
  • 当扩展生产者提供的单个 API 的资源模型或使用 API 网关在同一个基本 URL 上提供多个 API 时。


GraphQL 是一种用于 API 的开源数据查询和操作语言,以及使用现有数据执行这些查询的运行时(由 Facebook 开发,现为 Linux 基金会的一部分)。
  • 提供一种跨多个来源查询的查询语言。 
  • 允许客户端精确请求所需的字段,包括跨多个 API 的字段,从而减少首次加载时间。
  • 模式语言指定各个 API 中的类型以及 API 的组合方式,从而能够为所有 API 提供单一版本,从而简化版本管理。
  • 作为一种补充技术,应用于现有的传统系统以抽象复杂性。 
  • 当 API 消费者需要对广泛互连的服务进行统一的访问、过滤和查询时。
  • 移动设备受到屏幕较小和网络可用性的限制。


gRPC 是一个现代、开源、高性能的远程过程调用 (RPC) 框架,由 Linux 基金会管理。
  • 通过使用 HTTP/2、轻量级协议缓冲区、序列化有效负载和有状态实现,实现高性能和高可靠性。
  • 可插入支持负载均衡、跟踪、健康检查和身份验证。
  • 高接口功能和消息互操作性,为所有语言提供丰富的工具支持。 
  • 用于分布式计算的最后一英里,将设备、移动应用程序和浏览器连接到后端微服务,以及用于从移动到桌面/物联网交互的跨平台应用程序。
  • 适用于集装箱间运输(“东西向”)。
  • 具有需要流式传输的外部接口(“南北”),适用于聊天、金融、新闻等流式传输应用。 

通过对 API 基础知识的了解,我们将在后续文章中探讨如何构建、管理和保护 API 架构,然后通过为云重新构建旧式应用程序平台将所有内容整合在一起。

应用程序保护

想要进步吗? 立即下载电子书:

掌握 API 架构 | O'Reilly 电子书