什么是 API?

应用程序编程接口 (API) 是一个软件使用另一个软件的功能的一种方式。

学习目标

阅读本文后,您将能够:

  • 定义“API”
  • 解释 API 调用、API 端点、API 架构和 API 集成
  • 描述 Web API、SOAP API 和 REST API
  • 了解 API 的安全保护

复制文章链接

什么是应用程序编程接口 (API)?

应用程序编程接口 (API) 是一组规则,使软件程序能够将数据传输到另一个软件程序。API 让开发人员能够避免多余的工作;开发人员无需构建和重建已经存在的应用程序功能,而是可以按照 API 的要求格式化请求,从而将现有功能整合到他们的新应用程序中。

API 是一个“接口”,意味着一个事物与另一个事物交互的一种方式。举一个现实世界中的例子,ATM 有一个界面——一个屏幕和几个按钮,允许客户与他们的银行互动并请求服务,例如取出现金。同样,API 是一个软件与另一个程序交互以获得所需服务的方式。

想象一下,Jennifer 建立了一个网站,帮助通勤者在上班前检查高速公路的交通情况。Jennifer 可能会花费大量时间和金钱来建立一个复杂的高速公路跟踪系统,以便向她的网站用户提供这些信息。但是这些功能已经存在,因为外部各方已经创建了这样的系统。Jennifer 的网站没有重新创建这样的系统,而是使用由外部高速公路跟踪服务提供的 API。现在 Jennifer 可以专注于构建网站的其他方面。

什么是 API 调用?

API 调用也称为 API 请求,是针对 API 的消息,用于触发 API 使用。回顾一下这个示例,Jennifer 以这样一种方式构建她的网站,当它加载时,它会自动生成一个对高速公路跟踪服务的 API 调用。响应从该服务返回到网站,并使其能够显示最新的高速公路交通信息。

API 调用必须按照 API 的要求进行格式化才能正常工作。 API 的要求称为其“架构”。该架构还描述了为每个请求提供的响应类型。

假设一个通勤者使用 Jennifer 的网站查看 192 号高速公路的交通情况。该网站发送一个 API 调用来提供此信息,即一条写着“192 号高速公路”的消息。高速公路跟踪服务的 API 服务器接收到此消息并回复 192 号高速公路的行驶时间。想象一下这个 API 的架构:

API 请求 API 响应
“192 号高速公路” 192 号高速公路上的旅行时间
“217 号高速公路” 217 号高速公路上的旅行时间
“225 号高速公路” 225 号高速公路上的旅行时间

(请注意,这是一个高度简化的示例——实际上的 API 请求、响应和架构更为复杂。)

现在假设 Jennifer 的网站发送“高速公路 ASDFGHJ”的 API 请求。这不是一个有效的请求,因为它不符合 API 的架构,该架构只允许高速公路的实际名称。服务器将无法为此类请求提供可用的响应。

什么是 API 端点?

端点是一个通信信道的终点。API 端点是 API 响应的发源地。

在示例中,API 连接的客户端是 Jennifer 的网站,端点是托管 API 的服务器。Jennifer 的 API 调用必须前往 API 服务器负责的某个 URL(URL 是一个网址,如 www.cloudflare.com/learning)才能获得响应。

什么是 API 集成?

API 集成是两个或多个使用 API 的应用程序的组合。API 集成使一个应用程序能够从另一个应用程序的功能中受益,就像将销售团队和营销团队合并到一个办公室使这两个团队能够一起工作并从彼此的努力中受益一样。API 集成也常用于在两个应用程序或数据库之间同步数据。

什么是 Web API?

从操作系统到软件库,任何涉及计算机代码的东西都可以有一个 API。Web API 专门供通过互联网访问的 Web 应用程序使用。

Web API 对于现代互联网来说非常重要。几乎所有面向用户的应用程序都依赖 API 来运行(不仅仅是 Jennifer 的网站!)。整个软件开发理念都依赖于 API 的使用——其中一种理念是 JAMstack,JAM 代表 JavaScript、API、markup。另一个示例是微服务架构,它使用 API 来调用构成应用程序的不同功能。即使没有使用这些方法构建的应用程序通常也依赖于 API。

什么是 SOAP API 和 REST API?

SOAP API 和 REST API 描述了不同类别的 API。

SOAP(简单对象访问协议)是一种协议。SOAP API 是只使用 SOAP 协议的 API。

REST(REpresentational State Transfer,表述性状态转移)是一种 Web 服务的架构样式。REST API 是使用 REST 架构构建的任何 API。与 SOAP API 不同,REST API 可以使用任何协议。如今的大多数 API 都是 REST API。

API 是否会引入安全风险?

正如允许一个人使用应用程序会带来该人滥用应用程序的风险一样,API 也会带来 API 客户端滥用服务的风险。此外,Web API 调用通过互联网传输,也可能像通过网络传输任何其他数据一样被拦截、假冒或修改。

API 安全是保护 API 免受攻击和滥用的做法。鉴于 API 对现代互联网的重要性,API 安全是 Web 应用程序安全性的核心组成部分。关键的 API 安全措施包括:

  • 速率限制:发出过多 API 请求的客户端可能会减慢或使其他客户端的 API 崩溃。速率限制限制了在特定时间范围内可以来自给定 API 端点的 API 请求数量。
  • DDoS 防护:与速率限制类似,分布式拒绝服务 (DDoS) 防护可以阻止 DDoS 攻击,此类攻击的目的是用一次发送的大量请求耗尽或淹没一个 API。
  • 身份验证:对 API 端点和客户端进行身份验证,以确保 API 请求来自合法来源而不是来自攻击者,这非常重要。双向 TLS (mTLS) 是最有效的 API 身份验证形式之一。
  • 架构验证:如果 API 请求不符合 API 的架构,API 可能会以意想不到的方式做出反应——例如泄露机密数据。架构验证使 API 能够丢弃此类请求。

Cloudflare API Shield 包括以上这些和其他安全功能,以防止 API 威胁。要更深入地了解 API 安全,请参阅什么是 API 安全?