什么是API?从定义到应用的全面指南
什么是API?从定义到应用的全面指南
API(应用程序编程接口)是软件系统中不可或缺的组成部分,它使得不同应用程序之间能够实现数据交换和通信。本文将为您详细介绍API的定义、工作原理、类型、特点以及应用场景,帮助您全面了解这一重要的技术概念。
什么是API?
应用程序编程接口(API)是一种软件接口,它使两个应用程序无需用户参与即可进行通信。它是一组计算机程序和操作。它是可以查看或执行的软件代码,可实现两个软件程序之间的数据交换和通信。
命令行工具、企业代码、微服务和云原生架构都是使用API概念的示例。它是一个以编程方式与不属于开发人员代码的软件资源或组件进行交互的接口。它是其他组件可以访问的软件组件区域。除非您从头开始编写每一行代码,否则您将与外部软件组件进行交互,并且每个组件都有一个API。即使您从头开始编写所有代码,设计良好的应用程序也应包含内部API,以帮助组织代码并使其部分更可重用。
无论是创建基本应用程序还是最复杂的设计和体系结构注意事项,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或查询字符串参数,数据交换进一步安全。
以支付处理服务的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主要有四类:
- 开放API:开放API,通常称为外部或公共API,可供开发人员和其他用户免费访问。它们旨在允许其他用户(例如其他企业的开发人员)访问数据或服务。它们可能是开放的,或者需要注册和使用API密钥。
- 合作伙伴API:合作伙伴API在概念上与开放API相当,但通常具有有限的访问权限,通常由第三方API网关管理。它们通常是为特定目标而创建的,例如授予对需要付费的服务的访问权限。这种模式在软件即服务的生态系统中非常普遍。
- 内部API:与开放API相比,内部API旨在对外部用户隐藏。它们用于在组织内交换资源。它们使公司的多个团队或部门能够使用彼此的资源,例如数据和软件。与传统的集成方法相比,使用内部API有几个好处,包括安全性和访问控制、系统访问记录以及用于集成各种服务的统一接口。
- 复合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开发的一个概念是Web API。它不包括有关Web服务器或浏览器的信息,只关注Web应用程序的客户端。Web API服务用于在各种设备(包括便携式计算机、移动电话和其他设备)上提供服务,以及如果要在分布式系统上使用应用程序。Web API是联机应用程序的增强版本。
两类Web API是:
- 服务器端:服务器端Web API是一个编程接口,用于支持服务器和Web应用程序之间的通信。它为服务器提供了一种从Web应用程序请求信息并从Web应用程序接收响应的方法。API还可用于将数据从服务器发送到Web应用程序。服务器端Web API用于Web开发,以允许Web应用程序与外部服务(如数据库、文件系统和外部Web服务)进行交互。
- 客户端:客户端Web API是基于Web浏览器的应用程序编程接口(API)集,使Web应用程序能够与用户的Web浏览器进行交互,例如控制浏览器的历史记录、管理Cookie和操作用户界面本身。客户端Web API的示例包括XMLHttpRequest对象、Fetch API和Geolocation API。
Web API的一些示例:
- Google Maps APIs:使用JavaScript或Flash界面,谷歌地图可以使用谷歌地图API集成到网页中。
- YouTube APIs:Google的API使开发人员能够将YouTube及其功能整合到网站和软件中。YouTube分析API、YouTube Data API、YouTube直播API、YouTube播放器API等都是YouTube API的示例。
- The Flickr APIs:开发人员可以使用这些API访问Flickr照片共享社区数据。
- Twitter APIs:Twitter提供了两个API,即REST API和搜索API。REST API使开发人员能够访问核心Twitter数据,而搜索API为他们提供了在Twitter上参与搜索和趋势数据的方法。
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消息的格式。
API测试工具
API测试涉及使用软件来评估API的构造方式,以确保程序的功能、可靠性、安全性和性能不会受到影响。它检查API是否正常工作并实现其预期目的。让我们看看一些最好的API测试工具:
- Apigee
Apigee是一个由JavaScript驱动的有趣的跨云API测试平台,允许开发人员和测试人员使用多个编辑器访问其功能。该工具适用于包含大量数据的API,这使其成为复杂而强大的数字组织的理想选择。通过检查API流量、响应时间和潜在错误率,它还可以快速发现影响性能的问题。
- SoapUI
SoapUI是为希望在必要时创建更复杂的自动化测试和手动调用的高级用户开发的。但是,由于SoapUI的图形测试界面,新手测试和开发人员也可以赶上。用户可以拖放部分来构建他们的测试,而不是在代码中编写API调用。SoapUI有两个版本:SoapUI Open Source,一个免费的实用程序,以及ReadyAPI,一个高级工具。
Katalon
Katalon是用于API、在线应用程序以及桌面和移动应用程序的知名测试自动化工具。它提供了许多参数化功能和命令,并支持SOAP和REST调用。该软件的主要优点之一是,尽管它具有许多有价值的功能,但它使用起来并不过分复杂,即使对于非技术人员也很合适。Postman
Postman不需要开发人员或测试人员学习一门新语言,它还支持多种形式(如Swagger和RAML)。此外,它还提供预构建的工作区、集合和工具。开发人员和测试人员可以将文本跳过到命令行窗口中,因为Postman与CURL不同,它不是基于命令行的应用程序。Tricentis
Tricentis开发了一个全面的软件测试平台,可为任何技术堆栈中的任何应用程序提供持续测试功能。该平台集成了现有的开发和DevOps流程,以实现全面的端到端测试。它涵盖了测试的所有方面,包括功能、非功能、性能、安全性和探索性测试。它支持手动和自动测试,并提供团队协作工具。此外,它还提供全面的测试分析和报告功能,以跟踪和提高质量。Assertible
Assertible是一个基于云的平台,使软件团队能够快速有效地监控、测试和部署应用程序和服务。它可以帮助团队快速识别和诊断问题并快速部署更新。Assertible旨在易于使用,并提供有关应用程序和服务性能的实时反馈。它还使用户能够深入了解其应用程序和服务的行为,帮助他们识别和解决潜在问题。
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必须优雅地处理错误,并为用户提供有用的信息。
本文原文来自UML图书馆