发布日期:2023 年 4 月 9 日
撰稿人:Michael Goodwin
API(应用程序编程接口)是一组规则或协议,可支持软件应用程序相互通信,以交换数据、特性和功能。
API 允许开发人员集成来自其他应用程序的数据、服务和功能,而不是从头开始开发它们,从而简化和加速应用程序和 软件开发 。 API 还为应用程序所有者提供了一种简单、安全的方式,使其应用程序数据和功能可供组织内的部门使用。 应用程序所有者还可以将数据和功能共享或推销给业务合作伙伴或第三方。
API 允许仅共享必要的信息隐藏其他内部系统详细信息这有助于系统安全。 服务器或设备不必完全公开数据——API 支持共享与特定请求相关的小数据包。
API 文档就像一本技术说明手册,它提供了有关 API 的详细信息,并为开发人员提供了有关如何使用 API 及其服务的信息。精心设计的文档可为用户带来更好的 API 体验,通常也会使 API 更为成功。
了解智能自动化如何为您的业务运营带来竞争优势。
注册获取实施 FinOps 的指南
从客户端和服务器之间请求和响应的角度来考虑 API 通信是非常有用的。 提交请求的应用程序是客户端,服务器提供响应。 API 是在它们之间建立连接的桥梁。
我们通过第三方支付处理这个常见示例,可以轻松地了解 API 工作原理。当用户在电子商务网站上购买产品时,该网站可能会提示用户“使用 PayPal 付款”或其他类型的第三方系统。此功能依赖 API 来建立连接。
当买家点击付款按钮时系统会发送 API 调用以检索信息。 这就是请求。该请求是通过 API 的统一资源标识 (URI) 从应用程序处理到 Web 服务器,包括请求动词、标头,有时还包括请求正文。
从产品网页收到有效请求后,API 会调用外部程序或 Web 服务器,在本例中为第三方支付系统。
服务器向 API 发送包含所请求信息的响应。
API 将数据传输到初始请求的应用程序,此处为产品网站。
虽然数据传输会根据所使用的 Web 服务而有所不同,但请求和响应都是通过 API 发生的。用户界面上看不到这些传输,这意味着 API 在计算机或应用程序内交换数据,在用户看来是一种无缝连接。
API 可以按用例分类包括数据 API、操作系统 API、远程 API 和 Web API。
用于连接应用程序和数据库管理系统。
用于定义应用程序如何使用操作系统服务和资源。
用于定义不同设备上的应用程序如何交互。
用于使用 HTTP 协议通过 Internet 实现数据和功能传输。
如今,大多数 API 都是 Web API。Web API 是一种远程 API(即 API 使用协议来操作外部资源),可通过互联网公开应用程序的数据和功能。
Web API 的 4 种主要类型是:
开放 API 是可以通过 HTTP 协议访问的开源应用程序编程接口。也称为公共 API,它们定义了 API 端点以及请求和响应格式。
合作伙伴 API 连接战略业务合作伙伴。通常,开发人员通过公共 API 开发人员门户以自助服务模式访问这些 API 。尽管如此,他们仍然需要完成加入流程并获得登录凭证才能访问合作伙伴 API。
内部或私有 API 对外部用户保持隐藏状态。 这些专用 API 不适用于公司外部的用户。 相反,组织使用它们来提高不同内部开发团队之间的生产力和沟通。
复合 API 组合了多个数据或服务 API。它们允许程序员在一次调用中访问多个端点。复合 API 在微服务架构中非常有用,在微服务架构中执行单个任务可能需要来自多个来源的信息。
由于 API 允许公司开放对其资源的访问,同时保持安全性和控制力,因此它们已成为现代商业和个人应用程序的一个重要方面。
以下是用户经常遇到的一些 API 示例
一个流行的 API 示例是人们能够使用其 Facebook、X 或 Google 个人资料登录详细信息登录网站的功能。 这一便捷的功能允许任何网站使用更受欢迎的服务之一的 API 进行快速身份验证。 这一功能可帮助用户省去为每个网络应用程序或新会员设置新配置文件的时间和麻烦。
这些 “智能设备” 通过 API 提供额外的功能,例如支持互联网的触摸屏和数据收集。 例如,智能冰箱可以连接到食谱应用程序,或者通过短信记下笔记并向手机发送笔记。 内部摄像头连接到各种应用程序,以便用户可以从任何地方看到冰箱内的物品。
旅游预订网站汇总了数千个航班,展示了每个日期和目的地的最便宜的选择。 通过应用程序接口,应用程序用户可以访问酒店和航空公司的最新空房信息,从而实现这项服务。
您可以通过网络浏览器或旅行预订公司自己的应用程序进行访问。 通过自动交换数据和请求,API 极大地减少了检查可用航班或住宿所需的时间和精力。
导航应用程序使用显示静态或交互式地图的核心应用程序接口。 这些应用程序还使用其他 API 和功能为用户提供方向、限速、兴趣点、交通警告等信息。 用户在绘制行进路线或跟踪移动中的物品例如送货车辆时与 API 进行通信。
社交媒体公司使用 API 允许其他实体共享社交媒体应用程序上的内容并将其嵌入到自己的网站中。 例如利用 Instagram API企业可以将 Instagram 网格嵌入其网站并在用户添加新帖子时网格自动更新。
API 是软件即服务 (SaaS) 产品增长不可或缺的一部分。客户关系管理 (CRM) 工具等平台通常包含多个内置 API,可让公司集成已经使用的应用程序,如消息传递、社交媒体和电子邮件应用程序。
这种集成大大减少了在销售和营销任务应用程序之间切换的时间。它还有助于减少或防止使用不同应用程序的部门之间可能存在的数据孤岛。
传统上,API 是指连接到使用任何低级编程语言(例如 Javascript)创建的应用程序的接口。然而现代 API 的架构和数据格式的使用各不相同。 它们通常是为 HTTP 构建的,从而产生了开发人员友好的界面,这些界面很容易被用 Java、Ruby、Python 和许多其他语言编写的应用程序访问和广泛理解。
随着 Web API 使用的增加,它导致了某些协议、样式、标准和语言的开发和使用。 这些结构为用户提供了一组定义的规则或 API 规范用于创建可接受的数据类型、命令和语法。 实际上,这些 API 协议促进了标准化信息交换。
SOAP 是一种基于 XML 的轻量级消息传递协议规范支持端点通过一系列通信协议发送和接收数据包括 SMTP简单邮件传输协议和 HTTP超文本传输协议。 SOAP 具有独立性,这使得 SOAP 应用程序接口可以在不同环境中运行或以不同语言编写的应用程序或软件组件之间共享信息。
远程过程调用 (RPC) 是一种协议提供操作系统中使用的高级通信范例。 RPC 假定存在一个低级传输协议,如传输控制协议/互联网协议(TCP/IP)或用户数据报协议(UDP),用于在通信程序之间传输消息数据。
RPC 实现了逻辑上的客户端到服务器通信系统专为支持网络应用程序而设计。 RPC 协议使用户能够像使用本地过程一样使用远程过程。 1
XML-RPC 协议依靠特定的 XML 格式来传输数据。 XML-RPC 比 SOAP 更古老,但简单得多,并且相对轻量级,因为它使用的带宽最小。
与 XML-RPC 一样,JSON-RPC 是一个远程过程调用,它使用 JSON(JavaScript 对象表示法)而不是 XML。 JSON 是一种轻量级数据交换格式易于解析并使用名称/值对和有序值列表。 由于 JSON 使用通用数据结构因此可以与任何编程语言一起使用。
gRPC 是最初由 Google 开发的高性能开源 RPC 框架。 gRPC 使用网络协议 HTTP/2 和 Protocol Buffers 数据格式通常用于连接微服务架构中的服务。
WebSocket API 支持客户端和服务器之间的双向通信。 这种类型的 API 不需要为每次通信建立新的连接——连接建立后就可以持续进行交换。 这使得 Web Socket API 成为实时通信的理想选择。
REST 是一组 Web API 架构原则。 REST API (又称 RESTful API)是指遵守某些 REST 体系结构约束的 API。REST API 使用 GET、PUT、HEAD 和 DELETE 等 HTTP 请求与资源交互。 REST 将数据作为资源提供每个资源由唯一的 URI 表示。 客户端通过提供资源的 URI 来请求资源。
REST API 是无状态的,它们不会在请求之间保存客户端数据。 使用 SOAP 协议构建 RESTful API 是可能的,但从业者通常将这两个标准视为相互竞争的规范。
GraphQL 是一种开源查询语言和服务器端运行时,用于指定客户端应如何与 API 交互。2 GraphQL 允许用户仅用几行代码发出 API 请求而不必访问具有许多参数的复杂端点。 此功能可以更轻松地生成和响应 API 查询特别是针对多个资源的更复杂或特定的请求。
SOAP 和 REST 代表 API 设计的不同方法,描述了 API 如何与其他应用程序交互的规则和标准。 SOAP 是一种协议而 REST 是构成架构风格的一组约束。 两者都使用 HTTP 来交换信息。
REST 通常被认为是 SOAP 的更简单的替代方案,因为它轻量、灵活、透明且相对易于使用;与 REST 相比,SOAP 要求用户编写更多的代码来完成每个任务。
SOAP 更具确定性和鲁棒性(得益于类型检查),并且支持者认为,由于许多开发工具都内置了 SOAP 支持,因此 SOAP 更易于使用。3SOAP 具有内置合规性,开发人员通常认为它是一种更安全的协议,更适合对数据完整性要求严格的情况。
RESTful 系统支持不同格式的消息传递,例如纯文本、HTML、YAML、XML 和 JSON,而 SOAP 仅支持 XML。每种类型都有其优势,“正确的选择”可能取决于用例。然而,支持多种数据存储和交换格式的能力是 REST 成为当今构建公共 API 的普遍选择的原因之一。
GraphQL 是一种查询语言和 API 运行时,由 Facebook 于 2012 年内部开发,然后在 2015 年开源。GraphQL 和 REST 均无状态,并使用客户端/服务器模型和 HTTP。GraphQL 解决了 REST 的一些局限性,例如,提供通过单个请求更准确地定位所需资源的能力。
REST API 遵循固定结构,并且始终返回指定对象的完整数据集。 例如,如果请求更复杂,跨越多个资源,则客户端必须为每种资源提交单独的请求。 这些限制可能会导致读取不足或过度提取的问题。
点击此处了解更多 GraphQL 与 REST 的相关信息。
REST API 和 GraphQL API 都不是天生优越的。 它们是适合不同任务的不同工具。
REST 通常更易于实现,当首选具有严格访问控制的简单、可缓存的通信协议时,REST 可能是一个不错的选择(例如 Shopify 和 GitHub 等面向公众的电子商务网站)。
GraphQL API 可实现更灵活、更高效的数据获取,从而提高系统性能以及针对开发人员的易用性。这些功能使得 GraphQL 尤其适合在前端需求快速变化的复杂环境中构建 API。4
Web 服务是一种互联网软件组件,可促进通过网络进行数据传输。 由于 Web 服务将应用程序的数据和功能公开给其他应用程序,因此实际上每个 Web 服务都是一个 API。然而,并非每个 API 都是 Web 服务。
API 是充当两个断开连接的应用程序之间中介的任何软件组件。虽然 Web 服务也连接应用程序,但它们需要网络才能实现。Web 服务通常是私有的,只有经过批准的用户才能访问。
微服务是一种架构风格,它将应用程序划分为较小的独立组件,通常使用 REST API 进行连接。 将应用程序构建为独立服务的集合使开发人员能够独立于其他应用程序组件而工作并使应用程序更易于测试、维护和扩展。
随着云计算的兴起,微服务架构变得越来越普遍,它与容器和 Kubernetes 一起成为云原生应用程序开发的基础。
API 简化了新应用程序和服务的设计和开发,以及现有应用程序和服务的集成和管理。它们还为 开发人员 和整个组织提供了显着的好处。
企业平均使用近 1,200 个云应用程序(ibm.com 外部链接),其中许多应用程序已断开连接。API 支持集成,以便这些平台和应用程序可以无缝地相互通信。通过这种集成,公司可以实现工作流程自动化并改善工作场所协作。如果没有 API,许多企业将缺乏连通性,导致信息孤岛,从而影响生产效率和绩效。
API 提供了灵活性,使公司能够与新的业务合作伙伴建立联系并为现有市场提供新服务。这种灵活性还使企业能够进入新的市场,从而提高收益并推动数字化转型。
例如,Stripe 公司最初从一个只有七行代码的 API 开展业务。此后,该公司与世界上许多最大的企业合作。Stripe 已实现多元化,提供贷款和公司卡服务,最近估值(ibm.com 外部链接)达到 650 亿美元。
许多公司选择免费提供 API,至少在最初是这样,这样他们就可以围绕自己的品牌积累开发人员受众,并与潜在的业务合作伙伴建立关系。如果 API 授予对有价值的数字资产的访问权限,企业就可以通过出售访问权限来实现货币化。这种做法称为 API 经济。
当 AccuWeather(ibm.com 外部链接)推出自助服务开发人员门户网站,以销售各种 API 包,仅用 10 个月就吸引了 24,000 名开发者,并销售了 11,000 个 API 密钥。此举有助于在此过程中建立一个繁荣的社区。
API 在网络内提供额外的保护。 它们还可以为个人用户提供另一层保护。 当网站请求用户的位置时(位置 API 可提供该信息),用户可决定是否允许或拒绝该请求。
许多 Web 浏览器以及桌面和移动操作系统都具有内置的权限结构。 当应用程序必须通过 API 访问文件时 iOS、macOS、Windows 和 Linux 等操作系统会使用该访问权限。
跨多云管理您的 API 生命周期,促成整体业务生态系统实现社交化,并优化经济效益。
借助集成解决方案实现连接、自动化并释放业务潜力
连接应用程序、数据、业务流程和服务,无论它们是托管在本地、私有云中还是公共云环境中。
使用微服务架构,开发云原生移动和 Web 应用
API 监控是观察企业应用程序编程接口 (API) 的性能、可用性和功能的过程。
了解 IBM 为何在 2023 年 Gartner API 管理关键能力报告中被评为领导者。
API 端点是一个数字位置,应用程序编程接口 (API) 接收 API 调用(也称为 API 请求),以使用其服务器上的资源。
了解不同类型的 API、协议和开发风格,以及每种类型如何优化系统之间的数据管理。
了解 API 管理以及统一 API 管理平台如何帮助您的组织扩大规模。
1“远程过程调用”,ibm.com,2023 年 11 月 3 日。
2“什么是 GraphQL”,Chrystal R. China,ibm.com,2023 年 12 月 8 日。
3“比较 REST 和 SOAP”,ibm.com,2021 年 3 月 5 日。
4“GraphQL 与 REST API:有什么区别?”,Chrystal R. China,ibm.com,2024 年 3 月 29 日。