API(即应用程序编程接口)是一组定义的规则,使不同的应用程序能够相互通信。它充当处理系统之间数据传输的中间层,使公司能够向外部第三方开发人员、业务合作伙伴和公司内部部门开放其应用程序数据和功能。
API 中的定义和协议可帮助企业连接日常运营中使用的许多不同应用程序,从而节省员工时间并打破孤岛,有利于协作和创新。对于开发人员来说,API 文档提供了应用程序之间通信的接口,简化了应用程序集成。
我们通过第三方支付处理这个常见示例,可以轻松地了解 API 工作原理。当用户在电子商务网站上购买产品时,系统可能会提示他们“使用 Paypal 付款”或其他类型的第三方系统。此功能依赖 API 来建立连接。
当买家点击付款按钮时,API 会调用以检索信息(也称为请求)。该请求是通过 API 的统一资源标识 (URI) 从应用程序处理到 Web 服务器,包括请求动词、标头,有时还包括请求正文。
从产品网页收到有效请求后,API 会调用外部程序或 Web 服务器,在本例中为第三方支付系统。
服务器向 API 发送包含所请求信息的响应。
API 将数据传输到初始请求的应用程序,此处为产品网站。
虽然数据传输会根据所使用的 Web 服务而有所不同,但请求和响应都是通过 API 发生的。用户界面上看不到这些传输,这意味着 API 在计算机或应用程序内交换数据,在用户看来是一种无缝连接。
API 简化了新应用程序和服务的设计和开发,以及现有应用程序和服务的集成和管理。同时它们还为开发人员和整个组织提供了其他显著的好处。
改进协作。企业平均使用近 1,200 个云应用程序(ibm.com 外部链接),其中许多应用程序已断开连接。API 支持集成,以便这些平台和应用程序可以无缝地相互通信。通过这种集成,公司可以实现工作流程自动化并改善工作场所协作。如果没有 API,许多企业将缺乏连接性,从而导致信息孤岛,从而影响生产力和性能。
加速创新。API 提供了灵活性,使公司能够与新的业务合作伙伴建立联系,向现有市场提供新的服务,并最终进入能够产生巨大回报和推动数字化转型的新市场。例如,Stripe 公司最初从一个只有七行代码的 API 开展业务。此后,该公司与全球许多大型企业建立了合作关系,提供贷款和企业卡等多元化服务,最近估值达到 360 亿美元(ibm.com 外部链接)。
数据货币化。许多公司选择免费提供 API,至少在最初是这样,这样他们就可以围绕自己的品牌建立开发人员受众,并与潜在的业务合作伙伴建立关系。如果应用程序接口允许访问有价值的数字资产,企业就可以通过出售访问权限来实现货币化。这称为 API 经济。当 AccuWeather(ibm.com 外部链接)推出了自助服务开发者门户网站,销售各种应用程序接口包,仅用 10 个月就吸引了 24,000 名开发者,销售了 11,000 个应用程序接口密钥,并在此过程中建立了一个蓬勃发展的社区。
系统安全。API 将请求应用程序与响应服务的基础架构分开,并在两者通信时在两者之间提供安全层。例如,API 调用通常需要身份验证凭据;HTTP 头、Cookie 或查询字符串可以在数据交换期间提供额外的安全性,API 网关可以控制访问权限以进一步减少安全威胁。
最终用户安全和隐私。正如 API 在网络内提供额外的保护一样,它们也可以为个人用户提供多一层保护。当网站请求通过位置 API 提供的用户位置时,用户可以决定是允许还是拒绝该请求。当 API 请求访问应用程序及其数据时,许多 Web 浏览器和移动操作系统(例如 iOS)都具有内置的权限结构。当应用程序必须通过 API 访问文件时,Windows、Mac 和 Linux 等文件系统会使用该访问权限。
由于 API 允许公司开放对其资源的访问,同时保持安全性和控制力,因此它们已成为现代商业和个人应用程序的一个重要方面。下面是一些用户几乎每天都会遇到的 API 常用示例:
通用登录:一个常用的 API 功能示例是,人们能够使用 Facebook、Twitter 或 Google 个人资料登录详细信息来登录其他网站。这一便捷的功能允许任何网站利用某个更受欢迎服务的 API 进行快速身份验证,从而节省了为每个网络应用程序或新会员设置新配置文件的时间和麻烦。
物联网 (IoT):这些“智能设备”通过 API 提供附加功能,例如支持互联网的触摸屏和数据收集。例如,智能冰箱可以连接到食谱应用程序或通过短信记录笔记并将其发送到手机。内部摄像头连接到各种应用程序,以便用户可以从任何地方看到冰箱内的物品。
旅行预订比较:旅行预订网站汇总了数千个航班,展示了每个日期和目的地的最经济的选择。这项服务是通过 API 实现的,应用程序用户可以通过网络浏览器或旅行预订公司自己的应用程序,来访问酒店和航空公司的最新空房信息。通过自动交换数据和请求,API 极大地减少了检查可用航班或住宿所需的时间和精力。
地图应用程序:除了显示静态或交互式地图的核心 API 之外,这些应用程序还使用其他应用程序接口和功能为用户提供方向、限速、兴趣点、交通警告等信息。用户在规划旅行路线或跟踪移动中的物品(如送货车辆)时可以与 API 通信。
Twitter:每条推文都包含描述性核心属性,包括作者、唯一 ID、消息、发布时间戳和地理位置元数据。Twitter 向开发人员提供公共推文和回复的核心属性,并允许他们通过公司的 API 在其他网页上发布推文。
SaaS 应用程序:API 是软件即服务 (SaaS) 产品增长不可或缺的一部分。CRM(客户关系管理工具)等平台通常包含许多内置 API,使公司能够与他们已经使用的应用程序集成,例如消息传递、社交媒体和电子邮件应用程序。这大大减少了在不同应用程序之间进行切换以执行销售和营销任务的时间。它还有助于减少或防止使用不同应用程序的部门之间可能存在的数据孤岛。
如今,大多数 API 都是 Web API,它们通过互联网公开应用程序的数据和功能。以下是 Web API 的四种主要类型:
开放 API 是可以通过 HTTP 协议访问的开源应用程序编程接口。也称为公共 API,它们定义了 API 端点以及请求和响应格式。
合作伙伴 API 连接战略业务合作伙伴。通常,开发人员通过公共 API 开发人员门户以自助服务模式访问这些 API。尽管如此,他们仍然需要完成加入流程并获得登录凭证才能访问合作伙伴 API。
内部 API 对外部用户保持隐藏。这些专用 API 不适用于公司外部的用户,而是旨在提高不同内部开发团队之间的生产力和沟通。
复合 API 组合了多个数据或服务 API。它们允许程序员在一次调用中访问多个端点。复合 API 在微服务架构中非常有用,在微服务架构中执行单个任务可能需要来自多个来源的信息。
随着 Web API 的使用不断增加,某些协议被开发出来,为用户提供一组定义的规则或 API 规范,用于创建可接受的数据类型、命令和语法。实际上,这些 API 协议促进了标准化信息交换。
SOAP(简单对象访问协议):SOAP 使用 XML 构建,使端点能够通过 SMTP 和 HTTP 发送和接收数据。SOAP API 使在不同环境中运行或以不同语言编写的应用程序或软件组件之间共享信息变得更加容易。
XML-RPC(XML-远程过程调用):XML-RPC 协议依赖于特定的 XML 格式来传输数据。XML-RPC 比 SOAP 更古老,但简单得多,并且相对轻量级,因为它使用的带宽最小。
JSON-RPC: 与 XML-RPC 一样,JSON-RPC 是远程过程调用,但使用 JSON(JavaScript 对象表示法)而不是 XML 来传输数据。
REST(代表性状态传输):REST 是一组 Web API 架构原则。REST API(又称 RESTful API)是指遵守某些 REST 体系结构约束的 API。使用 SOAP 协议可以构建 RESTful API,但这两个标准通常被视为相互竞争的规范。
传统上,API 是指连接到使用任何低级编程语言(例如 Javascript)创建的应用程序的接口。然而,现代 API 遵循 REST 原则和 JSON 格式。它们通常是为 HTTP 构建的,从而产生了开发人员友好的界面,这些界面很容易被用 Java、Ruby、Python 和许多其他语言编写的应用程序访问和广泛理解。
Web 服务是一种可以通过网址访问并促进数据传输的软件组件。由于 Web 服务将应用程序的数据和功能公开给其他应用程序,因此实际上每个 Web 服务都是一个 API。然而,并非每个 API 都是 Web 服务。
API 是充当两个断开连接的应用程序之间中介的任何软件组件。虽然 Web 服务也连接应用程序,但它们需要网络才能实现。有些 API 是开源的,而 Web 服务通常是专用的,只有经过批准的合作伙伴才能访问它们。
微服务是一种体系结构风格,它将应用程序划分为较小的独立组件(也称为微服务),使用 REST API 进行连接。将应用程序构建为一组单独的服务,使开发人员能够独立于其他应用程序组件在一个应用程序组件上工作,并使应用程序更易于测试、维护和扩展。
随着云计算的兴起,微服务体系结构变得更加普遍,并且与容器和 Kubernetes 一起成为云原生应用程序开发的基础。