应用程序编程接口
(API) 是一种软件接口,它使两个应用程序无需用户参与即可进行通信。它是一组计算机程序和操作。它是可以查看或执行的软件代码,可实现两个软件程序之间的数据交换和通信。
命令行工具、企业代码、微服务和云原生架构都是使用 API 概念的示例。它是一个以编程方式与不属于开发人员代码的软件资源或组件进行交互的接口。它是其他组件可以访问的软件组件区域。除非您从头开始编写每一行代码,否则您将与外部软件组件进行交互,并且每个组件都有一个
API。即使您从头开始编写所有代码,设计良好的应用程序也应包含内部 API,以帮助组织代码并使其部分更可重用。
无论是创建基本应用程序还是最复杂的设计和体系结构注意事项,API 都是必不可少的。它允许产品和服务进行交互,而无需了解这些产品和服务是如何付诸实践的。
1. API 如何工作?
API 是一组描述计算机或程序如何相互交互的规则。(通常,API
规范将包含这些条件的文档。API 是处理系统之间数据传输的中间层,位于应用程序和 Web 服务器之间)。
API 的操作方式如下:
客户端应用程序启动称为 API 调用的 API 请求以获取信息。此请求(包括请求谓词、标头,偶尔还包括从应用程序到
Web 服务器的请求正文)由 API 的统一资源标识符 (URI) 处理。
- API 在收到合法请求后联系外部程序或 Web 服务器。
-
API 从服务器接收包含所请求数据的响应。
-
数据从 API 发送到请求它的初始应用程序。
虽然数据传输方法因所使用的 Web 服务而异,但整个请求和响应过程由 API 处理。API
允许计算机或其他程序访问应用程序的数据和功能,而图形用户界面仅允许人类访问。
由于 API 终结点将使用服务的应用程序与提供该服务的基础结构分开,因此安全性本质上是由
API 提供的,因为它们充当中介。API 网关可以限制访问以减少安全威胁,并且 API 调用中经常包含授权凭证以限制服务器入侵的可能性。通过使用
HTTP 标头、Cookie 或查询字符串参数,数据交换进一步安全。
以支付处理服务的API为例。在在线商店应用程序的前端,客户可以提交他们的卡详细信息。支付处理器不需要访问用户的银行帐户,因为
API 为此交易创建唯一令牌,并将其包含在对服务器的 API 调用中。因此,黑客攻击的风险得到了更好的保护。
2. 为什么我们需要一个API?
应用程序编程接口可以帮助您管理当前工具或创建新工具,同时简化流程。以下是使用 API 的几个原因:
- 更轻松的创新:借助 API,企业拥有更多自由,因为他们可以与新的业务合作伙伴建立联系,为现有客户提供新服务,并最终进入可以产生可观回报并加速数字化转型的新市场。
-
易于维护:API 用于在两个系统之间建立网关。每个系统都必须进行内部修改,以确保 API 不受影响。这样,一方将来所做的任何代码更改都不会对另一方产生影响。
-
灵活性:以API为中心的平台在导入和导出数据方面非常有效,以至于它们不需要其他软件管理系统来保存数据记录。因此,企业现在可以改进其系统的功能,从而为其IT预算提供更大的灵活性。
-
改进的协作:API 使集成成为可能,允许这些平台和应用程序不间断地连接。企业可以通过这种集成简化程序并增强团队合作。如果没有
API,许多企业将遇到信息孤岛和缺乏连接性的情况,这将损害生产力和性能。
-
集成:API 用于将新应用程序连接到已安装的软件。由于不必从头开始编写每个功能,因此加快了开发时间。若要使用预先存在的代码,请使用
API。
-
自动化:应用程序编程接口可以自动执行一些耗时、重复的业务操作,否则员工会手动处理这些操作。这可以减少关键业务运营中人为错误的可能性,并释放员工的宝贵时间,使他们能够从事其他更有趣的组织职责。
-
个性化:企业可以利用 API 来定制和个性化其产品和服务。消费者信息可以使用API工具和预先存储的访问者数据自动导入到独特的应用程序和内容中。80%
的客户更有可能从提供定制体验的企业购买商品或服务。
3. API的特点
API 功能可以包括:
- 认证:身份验证是验证用户是谁,并确保他们有权访问他们请求的数据或资源。
-
授权:授权可确保仅允许用户访问允许他们访问的数据或资源。
-
速率限制:速率限制通过限制用户在特定时间范围内可以发出的请求数来帮助防止 API 过度使用或滥用。
-
缓存:缓存通过将响应的副本存储一段时间并将其重用于将来的请求来帮助提高 API 的性能。
-
数据验证:数据验证可确保发送到 API 的数据格式正确,并且仅包含有效数据。
-
文档:文档可帮助开发人员了解如何使用 API 以及要发送的数据类型。
-
错误处理:错误处理可帮助开发人员处理使用 API 时可能发生的错误。
-
安全:安全性有助于保护 API 免受恶意请求和未经授权的访问。
4. API的类型:
API 主要有四类:
1、开放API:开放 API,通常称为外部或公共 API,可供开发人员和其他用户免费访问。它们旨在允许其他用户(例如其他企业的开发人员)访问数据或服务。它们可能是开放的,或者需要注册和使用
API 密钥。
2、合作伙伴API:合作伙伴 API 在概念上与开放 API
相当,但通常具有有限的访问权限,通常由第三方 API 网关管理。它们通常是为特定目标而创建的,例如授予对需要付费的服务的访问权限。这种模式在软件即服务的生态系统中非常普遍。
3、内部API:与开放 API 相比,内部 API 旨在对外部用户隐藏。它们用于在组织内交换资源。它们使公司的多个团队或部门能够使用彼此的资源,例如数据和软件。与传统的集成方法相比,使用内部
API 有几个好处,包括安全性和访问控制、系统访问记录以及用于集成各种服务的统一接口。
4、复合API:开发人员可以使用复合 API 同时调用多个终结点。这些可以是许多
API 终结点、多个服务或不同的数据源。当用户需要来自多个服务的数据来完成微服务架构中的单个操作时,复合
API 非常有用。对复合 API 的一次调用可以返回用户所需的所有数据,从而减少服务器负载并提高应用程序性能。
5. API的通信级别
存在两类通信级别 API:
高级 API:
高级 API 是提供特定应用程序或服务抽象的应用程序编程接口。这些 API 旨在使开发人员更轻松地与应用程序或服务进行交互,并减少他们需要编写的代码量。高级
API 的示例包括 Google Maps API、Facebook Graph API 和
Amazon Web Services API。
低级 API:
低级应用程序编程接口 (API) 允许直接访问计算机系统的硬件和软件组件。它们通常用于创建复杂的软件应用程序,这些应用程序可以访问系统功能和数据的最基本级别。低级
API 通常使用更接近系统硬件和软件组件(如 C 和程序集)语言的语言编写。它们可以为计算机系统的最基本功能提供接口,例如内存,存储,网络和输入/输出。低级
API 通常用于创建需要直接访问系统的专用软件程序和驱动程序。
6. 什么是 Web API?
顾名思义,Web API 是可以使用 HTTP 协议在 Web 上访问的 API。该框架有助于开发基于
HTTP 的 RESTFUL 服务。Web API 可由 Web 服务器和 Web 浏览器使用。Web
开发的一个概念是 Web API。它不包括有关 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 APIs:使用JavaScript或Flash界面,谷歌地图可以使用谷歌地图API集成到网页中。
2、 YouTube APIs:Google的API使开发人员能够将YouTube及其功能整合到网站和软件中。YouTube
分析 API、YouTube Data API、YouTube 直播 API、YouTube
播放器 API 等都是 YouTube API 的示例。
3、The Flickr APIs:开发人员可以使用这些
API 访问 Flickr 照片共享社区数据。
4、Twitter APIs:Twitter 提供了两个
API,即 REST API 和搜索 API。REST API 使开发人员能够访问核心 Twitter
数据,而搜索 API 为他们提供了在 Twitter 上参与搜索和趋势数据的方法。
7. API 架构和协议
API 协议概述了 API 请求的准则,包括可接受的命令和可接受的数据格式。不同的 API
体系结构指定了对通信的各种限制。
REST
REST(具象状态传输)架构是一种流行的 Web API 架构。要归类为 REST API,API
必须遵守特定的架构限制或原则,例如:
客户端-服务器架构:后端和数据存储与接口隔离。这实现了灵活性和许多组件的独立发展。
- 无状态:服务器不会跟踪请求之间的客户端上下文。
-
客户端可以缓存响应;因此,REST API 答案必须声明是否可以显式缓存。
-
分层系统:无论直接与服务器通信还是通过中间服务器(如负载均衡器)通信,API 都将起作用。
JSON-RPC 和 XML-RPC
RPC 代表远程过程调用。虽然JSON-RPC使用JSON进行编码,但XML-RPC使用XML来执行此操作。这两种协议都不复杂。一个结果预期来自调用,其中可能包括多个参数。它们具有一些关键特征,需要
REST 的替代架构,包括:
- 与需要文档传输的 REST 协议不同,它们旨在调用方法(资源表示形式)。换句话说,REST处理资源,而RPC是关于操作的。
-
URI 标识服务器,但在其参数中不包含任何信息,这与 REST 不同,REST 包含查询参数等信息。
SOAP
SOAP(简单对象访问协议)是一种众所周知的 Web API 协议。它应该是独立的,中立的(能够使用各种通信协议,包括HTTP,SMTP和TCP)和可扩展的(它允许任何编程风格)。SOAP
规范中包括以下内容:
- 处理模型:应如何处理 SOAP 消息。
-
扩展性模型:SOAP 的模块和特征。
-
协议绑定规则:了解如何将 SOAP 与基础协议(如 HTTP)结合使用。
-
消息构造:应如何设置 SOAP 消息的格式。
8. API 测试工具
API 测试涉及使用软件来评估 API 的构造方式,以确保程序的功能、可靠性、安全性和性能不会受到影响。它检查
API 是否正常工作并实现其预期目的。
让我们看看一些最好的 API 测试工具:
1. Apigee
Apigee 是一个由 JavaScript 驱动的有趣的跨云 API 测试平台,允许开发人员和测试人员使用多个编辑器访问其功能。该工具适用于包含大量数据的
API,这使其成为复杂而强大的数字组织的理想选择。通过检查 API 流量、响应时间和潜在错误率,它还可以快速发现影响性能的问题。
2. SoapUI
SoapUI 是为希望在必要时创建更复杂的自动化测试和手动调用的高级用户开发的。但是,由于SoapUI的图形测试界面,新手测试和开发人员也可以赶上。用户可以拖放部分来构建他们的测试,而不是在代码中编写
API 调用。SoapUI有两个版本:SoapUI Open Source,一个免费的实用程序,以及ReadyAPI,一个高级工具。
3. Katalon
Katalon 是用于 API、在线应用程序以及桌面和移动应用程序的知名测试自动化工具。它提供了许多参数化功能和命令,并支持
SOAP 和 REST 调用。该软件的主要优点之一是,尽管它具有许多有价值的功能,但它使用起来并不过分复杂,即使对于非技术人员也很合适。
4. Postman
Postman 不需要开发人员或测试人员学习一门新语言,它还支持多种形式(如 Swagger
和 RAML)。此外,它还提供预构建的工作区、集合和工具。开发人员和测试人员可以将文本跳过到命令行窗口中,因为
Postman 与 CURL 不同,它不是基于命令行的应用程序。
5. Tricentis
Tricentis开发了一个全面的软件测试平台,可为任何技术堆栈中的任何应用程序提供持续测试功能。该平台集成了现有的开发和
DevOps 流程,以实现全面的端到端测试。它涵盖了测试的所有方面,包括功能、非功能、性能、安全性和探索性测试。它支持手动和自动测试,并提供团队协作工具。此外,它还提供全面的测试分析和报告功能,以跟踪和提高质量。
6. Assertible
Assertible 是一个基于云的平台,使软件团队能够快速有效地监控、测试和部署应用程序和服务。它可以帮助团队快速识别和诊断问题并快速部署更新。Assertible
旨在易于使用,并提供有关应用程序和服务性能的实时反馈。它还使用户能够深入了解其应用程序和服务的行为,帮助他们识别和解决潜在问题。
9. API的应用 -
付款:API 用于处理付款、发送发票和管理交易。
-
社交媒体:API 用于访问和显示来自社交媒体渠道(如 Facebook、Twitter 和
Instagram)的内容。
-
消息传递:API 用于发送和接收消息,包括短信、聊天消息和电子邮件。
-
地图:API 用于显示地图和方向以及搜索附近的兴趣点。
-
分析学:API 跟踪用户行为、分析数据并生成见解。
-
安全:API 实施身份验证和授权协议来保护网站和应用程序。
-
移动应用:API 用于创建应用和访问设备硬件和软件功能。
-
云计算:API 将云计算服务与网站和应用程序集成。
-
银行业:银行 API 允许客户访问其银行账户数据并直接从第三方应用程序付款。
-
地理位置:地理位置 API 使开发人员能够获取用户的位置,以提供相关的内容和服务。这可用于从当地天气信息到附近商店的路线的任何内容。
10. 使用 API 的挑战 -
安全性和身份验证:API 必须经过保护和身份验证,以保护用户数据免受恶意用户的侵害。这可以通过令牌、SSL
加密和其他身份验证方式来完成。
-
版本控制:随着 API 的发展和新功能的推出,维护 API 的版本控制非常重要,这样现有应用程序在添加新功能时就不会中断。
-
文档和支持:清晰、简洁的文档和支持对于使用 API 的开发人员至关重要。如果需要完成或更新文档,开发人员可能会在使用
API 时遇到困难。
-
可扩展性:API 提供程序需要纵向扩展和缩减以适应用户和请求的数量。如果 API 可以处理负载,则可能会导致更快的性能甚至停机时间。
-
性能:确保 API 的性能是提供良好用户体验的关键。这需要优化代码、缓存和其他技术,以确保
API 快速响应。
-
错误处理:错误处理是 API 设计中一个重要但经常被忽视的组件。API 必须优雅地处理错误,并为用户提供有用的信息。
|