什么是 API

2025年3月17日 | 阅读 12 分钟

应用程序编程接口 (API) 是一个 软件 接口,它允许两个应用程序在无需用户参与的情况下进行通信。它是一组计算机程序和操作。它是一种可以查看或执行的软件代码,能够实现两个软件程序之间的数据交换和通信。

命令行工具、企业代码、微服务和云原生架构等都是 API 概念的应用场景。它是一个可以以编程方式与开发者代码本身不包含的软件资源或组件交互的接口。它是软件组件中其他组件可以访问的区域。除非你从头开始编写每一行代码,否则你都会与外部软件组件进行交互,而这些组件中的每一个都有自己的 API。即使你从头开始编写所有代码,一个设计良好的应用程序也应该包含内部 API 来帮助组织代码并使其部分更具可重用性。

无论是创建基本应用程序还是最复杂的设计和架构考虑,API 都至关重要。它允许产品和服务进行交互,而无需了解这些产品和服务是如何实现的。

What is an API

API 如何工作?

API 是一组规则,用于描述 计算机程序 之间如何交互。(通常,API 规范将包含这些标准的文档。)API 是一个中间层,负责处理系统之间的数据传输,位于应用程序和 Web 服务器之间。

API 的工作方式如下:

客户端应用程序发起一个称为 API 调用的 API 请求以获取信息。此请求包含请求动词、标头,有时还包含从应用程序到 Web 服务器的请求正文,由 API 的统一资源标识符 (URI) 处理。

  • API 在收到合法请求后会联系外部程序或 Web 服务器。
  • API 从服务器接收到包含请求数据的响应。
  • API 将数据发送到最初请求它的应用程序。

虽然数据传输方式因所使用的 Web 服务而异,但整个请求和响应过程都由 API 处理。API 允许计算机或其他程序访问应用程序的数据和功能,而图形用户界面仅允许人类访问。

由于 API 端点将使用服务的应用程序与提供服务的底层基础设施分开,因此 API 作为中介的作用天然地提供了安全性。可以通过 API 网关限制访问以减少安全威胁,并且 API 调用中通常包含授权凭证以限制服务器被入侵的可能性。通过使用 HTTP 标头、Cookie 或查询字符串参数,可以进一步确保数据交换的安全性。

What is an API

例如,假设有一个支付处理服务的 API。在在线商店应用程序的前端,客户可以输入他们的卡详细信息。支付处理程序不需要访问用户的银行账户,因为 API 会为该交易创建一个唯一的令牌并将其包含在发送到服务器的 API 调用中。因此,可以更好地防范被黑客攻击的风险。

我们为什么要需要 API?

应用程序编程接口可以帮助您管理现有工具或创建新工具,同时简化该过程。以下是使用 API 的几个原因:

  • 更轻松的创新: API 为企业提供了更大的自由度,因为它们可以与新的业务合作伙伴建立联系,为现有客户提供新服务,并最终进入可以产生可观回报并加速数字化转型的新市场。
  • 易于维护: API 用于在两个系统之间建立网关。每个系统都必须进行内部修改,以确保 API 不受影响。通过这种方式,一方将来进行的任何代码更改都不会影响另一方。
  • 灵活性: 面向 API 的平台在导入和导出数据方面非常有效,因此不需要其他软件管理系统来保留数据记录。因此,企业现在可以提高其系统的功能性,为其 IT 预算提供更大的灵活性。
  • 改进协作: API 使集成成为可能,从而使这些平台和应用程序能够不间断地连接。企业可以通过这种集成简化流程并增强团队合作。没有 API,许多企业将面临信息孤岛和缺乏互联互通,这将影响生产力和绩效。
  • 集成: API 用于将新应用程序连接到已安装的软件。由于不必从头开始编写所有功能,因此可以加快开发时间。要利用现有的代码,请使用 API。
  • 自动化: 应用程序编程接口可以自动化一些耗时、重复的业务流程,这些流程否则需要员工手动处理。这可以降低关键业务运营中人为错误的发生几率,并释放员工宝贵的时间,使他们能够从事其他更具智力挑战性的组织职责。
  • 个性化: 企业可以使用 API 来定制和个性化其产品和服务。可以使用 API 工具和预先存储的访问者数据自动将消费者信息导入独特的应用程序和内容。80% 的客户更有可能从提供个性化体验的企业购买商品或服务。

API 的特性

API 的特性可能包括:

  • 身份验证: 身份验证是验证用户身份并确保他们有权访问他们请求的数据或资源。
  • 授权: 授权可确保用户只能访问他们被允许访问的数据或资源。
  • 速率限制: 速率限制通过限制用户在特定时间段内可以发出的请求数量来帮助保护 API 免受过度使用或滥用。
  • 缓存: 缓存通过在特定时间内存储响应的副本并将其用于将来的请求来帮助提高 API 的性能。
  • 数据验证: 数据验证可确保发送到 API 的数据格式正确且仅包含有效数据。
  • 文档: 文档有助于开发人员了解如何使用 API 以及发送什么样的数据。
  • 错误处理: 错误处理有助于开发人员处理在使用 API 时可能发生的错误。
  • 安全性: 安全性有助于保护 API 免受恶意请求和未经授权的访问。

API 类型

API 主要有四种类别:

What is an API
  1. 开放 API: 开放 API,通常称为外部或公共 API,开发者和其他用户可以免费访问。它们旨在允许其他用户(如其他公司的开发者)访问数据或服务。它们可以是开放的,也可以需要注册和使用 API 密钥。
  2. 合作伙伴 API: 合作伙伴 API 在概念上与开放 API 相似,但通常访问权限有限,通常由第三方 API 网关管理。它们通常具有特定目的,例如授予对付费服务的访问权限。这种模式在软件即服务生态系统中非常普遍。
  3. 内部 API: 与开放 API 不同,内部 API 旨在对外部用户隐藏。它们用于在组织内部交换资源。它们使公司的不同团队或部门可以使用彼此的资源,如数据和软件。与传统的集成方法相比,使用内部 API 具有多种优势,包括安全性、访问控制、系统访问记录以及用于集成各种服务的统一接口。
  4. 复合 API: 复合 API 允许开发者同时调用多个端点。这些可以是多个 API 端点、多个服务或不同的数据源。当用户需要来自多个服务的数据来完成微服务架构中的单个操作时,复合 API 非常有用。调用一次复合 API 即可返回用户所需的所有数据,从而减少服务器负载并提高应用程序性能。

API 的通信级别

API 的通信级别分为两类:

高层 API

高层 API 是应用程序编程接口,它们提供特定应用程序或服务的抽象。这些 API 旨在使开发者更容易与应用程序或服务交互,并减少他们需要编写的代码量。高层 API 的例子包括 Google Maps API、Facebook Graph API 和 Amazon Web Services API。

低层 API

低层应用程序编程接口 (API) 允许直接访问计算机系统的硬件和软件组件。它们通常用于创建复杂的软件应用程序,这些应用程序可以访问系统最基本的功能和数据。低层 API 通常用更接近系统硬件和软件组件语言的语言编写,例如 C 和汇编。它们可以提供对计算机系统最基本功能的接口,例如内存、存储、网络和输入/输出。低层 API 通常用于创建需要直接访问系统的专用软件程序和驱动程序。

什么是 Web API?

顾名思义,Web API 是一个可以使用 HTTP 协议在 Web 上访问的 API。该框架有助于开发基于 HTTP 的 RESTful 服务。Web API 可以被 Web 服务器和 Web 浏览器使用。Web API 是 Web 开发的一个概念。它不包含有关 Web 服务器或浏览器的信息,仅涉及 Web 应用程序的客户端。Web API 服务用于在各种设备(包括笔记本电脑、手机和其他设备)上提供服务,并且如果应用程序要在分布式系统上使用,则 Web API 是在线应用程序的增强版本。

Web API 包含两个类别:

  1. 服务器端: 服务器端 Web API 是一个允许服务器和 Web 应用程序之间通信的编程接口。它为服务器从 Web 应用程序请求信息并从 Web 应用程序接收响应提供了一种方式。API 还可用于将数据从服务器发送到 Web 应用程序。服务器端 Web API 在 Web 开发中使用,以允许 Web 应用程序与外部服务(如数据库、文件系统和外部 Web 服务)进行交互。
  2. 客户端: 客户端 Web API 是基于 Web 浏览器的应用程序编程接口 (API) 集合,它允许 Web 应用程序与用户的 Web 浏览器交互,例如控制浏览器的历史记录、管理 Cookie 以及操作用户界面本身。客户端 Web API 的例子包括 XMLHttpRequest 对象、Fetch API 和 Geolocation API。

Web API 的一些示例

  1. Google Maps API: 使用 JavaScript 或 Flash 接口,可以通过 Google Maps API 将 Google Maps 集成到网页中。
  2. YouTube API: 谷歌的 API 允许开发者将 YouTube 及其功能集成到网站和软件中。YouTube 分析 API、YouTube Data API、YouTube 直播流 API、YouTube 播放器 API 等是 YouTube API 的例子。
  3. Flickr API: 开发者可以使用这些 API 访问 Flickr 照片共享社区数据。
  4. Twitter API: Twitter 提供两个 API:REST API 和搜索 API。REST API 允许开发者访问核心 Twitter 数据,而搜索 API 则为他们提供了与 Twitter 上的搜索和趋势数据进行交互的方式。

API 架构和协议

API 协议概述了 API 请求的指南,包括可接受的命令和可接受的数据格式。不同的 API 架构对通信规定了各种限制。

REST

REST(表述性状态转移)架构是一种流行的 Web API 架构。要被归类为 REST API,API 必须遵守特定的架构限制或原则,例如:

客户端-服务器架构:后端和数据存储与界面隔离。这使得多个组件可以灵活地独立演进。

  • 无状态性:服务器在请求之间不保留客户端上下文。
  • 客户端可以缓存响应;因此,REST API 响应必须明确声明其是否可以缓存。
  • 分层系统:API 在直接与服务器通信或通过中间件(如负载均衡器)通信时都能正常工作。
What is an API

JSON-RPC 和 XML-RPC

RPC 代表远程过程调用。JSON-RPC 使用 JSON 进行编码,而 XML-RPC 使用 XML 进行编码。这两个协议都不复杂。调用预计会返回一个结果,其中可能包含多个参数。它们具有一些关键特征,需要一种不同于 REST 的架构,包括:

  • 与 REST 协议需要文档传输不同,它们旨在调用方法(资源表示)。换句话说,REST 处理资源,而 RPC 处理操作。
  • URI 标识服务器,但在其参数中不包含任何信息,这与 REST 不同,REST 的 URI 包含查询参数等信息。
What is an API

SOAP

SOAP(简单对象访问协议)是一种知名的 Web API 协议。它旨在独立、中立(能够与包括 HTTP、SMTP 和 TCP 在内的各种通信协议协同工作)且可扩展(它允许任何编程风格)。SOAP 规范包括以下内容:

  • 处理模型:SOAP 消息应如何处理。
  • 可扩展性模型:SOAP 的模块和特征。
  • 协议绑定规则:了解如何与底层协议(如 HTTP)一起使用 SOAP。
  • 消息结构:SOAP 消息应如何格式化。
What is an API

API 测试工具

API 测试涉及使用软件来评估 API 的构造方式,以确保程序的 LBS、可靠性、安全性和性能不会受到损害。它检查 API 是否正常工作并实现其预期目的。

让我们看看一些最好的 API 测试工具:

1. Apigee

Apigee 是一个由 JavaScript 驱动的有趣的跨云 API 测试平台,它允许开发者和测试人员使用多个编辑器访问其功能。该工具适用于包含大量数据的 API,使其成为复杂且强大的数字组织的理想选择。通过检查 API 流量、响应时间和潜在的错误率,它还可以快速发现影响性能的问题。

What is an API

2. SoapUI

SoapUI 是为希望创建更复杂的自动化测试和手动调用(如有必要)的高级用户设计的。然而,得益于 SoapUI 的图形测试界面,新手测试人员和开发人员也可以轻松上手。用户可以拖放组件来构建他们的测试,而不是在代码中编写 API 调用。SoapUI 有两个版本:SoapUI Open Source(免费工具)和 ReadyAPI(付费工具)。

What is an API

3. Katalon

Katalon 是一个知名的 API、Web 应用程序以及桌面和移动应用程序的测试自动化工具。它提供了多种参数化功能和命令,并支持 SOAP 和 REST 调用。该软件的一个主要优点是,尽管它具有许多有用的功能,但它并不过于复杂,即使对于非技术人员也适用。

What is an API

4. Postman

Postman 不需要开发者或测试人员学习新语言,并且它还支持多种格式(如 Swagger 和 RAML)。此外,它还提供了预构建的工作区、集合和工具。与 CURL 不同,Postman 不是基于命令行的应用程序,因此开发者和测试人员可以跳过将文本输入到命令行窗口。

What is an API

5. Tricentis

Tricentis 开发了一个全面的软件测试平台,为任何技术栈中的任何应用程序提供持续测试能力。该平台集成了现有的开发和 DevOps 流程,以实现全面的端到端测试。它涵盖了测试的所有方面,包括功能性、非功能性、性能、安全性和探索性测试。它支持手动和自动测试,并提供团队协作工具。此外,它还提供全面的测试分析和报告功能,以跟踪和提高质量。

What is an API

6. Assertible

Assertible 是一个基于云的平台,使软件团队能够快速有效地监控、测试和部署应用程序和服务。它帮助团队快速识别和诊断问题,并快速部署更新。Assertible 的设计易于使用,并提供应用程序和服务性能的实时反馈。它还为用户提供对其应用程序和服务的行为的见解,帮助他们识别和解决潜在问题。

What is an API

API 的应用

  • 支付: API 用于处理付款、发送发票和管理交易。
  • 社交媒体: API 用于访问和显示来自 Facebook、Twitter 和 Instagram 等社交媒体频道的。内容。
  • 消息:API 用于发送和接收消息,包括短信、聊天消息和电子邮件。
  • 地图: API 用于显示地图和路线,并搜索附近的兴趣点。
  • 分析: API 跟踪用户行为、分析数据并生成见解。
  • 安全: API 实施身份验证和授权协议来保护网站和应用程序。
  • 移动应用: API 用于创建应用程序并访问设备硬件和软件功能。
  • 云计算: API 将云计算服务与网站和应用程序集成。
  • 银行: 银行 API 允许客户直接从第三方应用程序访问其银行账户数据并进行付款。
  • 地理位置: 地理位置 API 使开发者能够获取用户的位置以提供相关内容和服务。这可以用于从本地天气信息到附近商店的路线。

使用 API 的挑战

  • 安全和身份验证: API 必须进行安全和身份验证,以保护用户数据免遭恶意用户的侵害。这可以通过令牌、SSL 加密和其他身份验证方式来完成。
  • 版本控制: 随着 API 的发展和新功能的可用,维护 API 的版本控制很重要,这样在添加新功能时现有的应用程序就不会中断。
  • 文档和支持: 清晰、简洁的文档和支持对于使用 API 的开发人员至关重要。如果文档需要补充或更新,开发人员可能会难以使用 API。
  • 可扩展性: API 提供商需要向上和向下扩展以适应用户和请求的数量。如果 API 无法处理负载,可能会导致性能下降甚至停机。
  • 性能: 确保 API 的性能对于提供良好的用户体验至关重要。这需要优化代码、缓存和其他技术,以确保 API 快速响应。
  • 错误处理: 错误处理是 API 设计中一个重要但经常被忽视的组成部分。API 必须优雅地处理错误并向用户提供有用的信息。

下一主题#