概念回顾: API 和 API 互联

news2024/11/19 1:20:31

原文作者:NGINX

原文链接:概念回顾: API 和 API 互联

转载来源:NGINX 开源社区


NGINX 唯一中文官方社区 ,尽在 nginx.org.cn

随着微服务架构的兴起,API 的数量急剧增加,由此也产生了一系列的挑战与解决方案。阅读本文,了解与 API 相关的基础概念以及 API 的使用现状。 

什么是应用编程接口 (API)? 

应用编程接口(简称 API)是一组定义、规则和协议,支持用户(人或软件)和信息(在线和 Web 应用提供的数据资源)两个实体之间的通信。 

如今,API 构成了现代应用的基本框架,帮助改善用户体验并增强业务模式。有时,API 甚至自身可以作为一种业务模式。

API 的工作原理是什么? 

API 是应用的“门面”,展示了应用执行的功能及其可提供的信息,并定义了正确的请求格式。当开发人员为一款应用创建 API 并将其暴露后,它允许其他应用与该应用通信。

在许多情况下,API 可帮助开发人员节省宝贵时间,因为它们让常用功能可以直接拿来使用。开发人员可通过调用现有应用的 API,将所需功能集成到自己的应用中,而不必浪费时间重新开发这些功能。 

每个 API 的设计、部署和运行方式都取决于其架构风格或协议。 

API 架构和协议的类型   

API 架构或架构风格是指 API 的顶层设计,包括 API 的结构和组织方式及其请求/响应格式。API 协议不仅指定了格式,同时还描述了确切的消息。

常见的 API 架构和协议包括: 

  • REST —— 也被称为 RESTful,这种架构风格基于表征状态转移的原则。它使用 HTTP 方法(例如 GET、POST、PUT 和 DELETE)和抽象信息(以资源和资源模型的形式)来创建可扩展、灵活且技术独立的结构。如今,REST 仍然是最受欢迎的 API 架构。 

  • GraphQL —— 由 Meta(原名 Facebook)开发的一种开源查询语言,GraphQL 架构支持通过单个 API 调用从多个来源获取数据。由于客户端只请求必要的数据,因此 GraphQL API 往往比 REST API 更加高效(但缓存能力较差)。 

  • SOAP —— 这种架构方法使用简单对象访问协议 (SOAP)。SOAP 消息通常采用 XML 格式,因此相比 REST 或 GraphQL 略显笨重。与 REST API 不同,SOAP API 采用严格的实施准则来定义 API 协议的结构。 

  • WebSocket —— 这种 API 协议为全双工通信协议,意味着客户端和服务器可以同时发送和接收消息。此外,服务器发送的消息可以不是对客户端请求的响应,而是(例如)由服务器端的事件触发。相比之下,REST API 遵循严格的“请求-响应”模式。 

  • RPC —— 借助远程过程调用,开发人员能够使用相同的代码来调用在不同地址空间(通常是在远程服务器上)中运行的函数 — 就像调用本地函数一样,而不必指定远程交互的细节。由于可以使用多种语言,因此这种协议很灵活,常用于“客户端-服务器”通信。gRPC(Google 远程过程调用)就是一种 RPC。 

API 使用现状 

API 是现代软件的关键组成部分,如今各企业都会根据需求构建或使用许多不同类型的 API。 

目前企业中最常见的四种 API 是公共 API、私有 API、合作伙伴 API 和第三方 API。 

公共 API 

公共 API 可供企业外部的用户访问(无论是付费还是免费),助力您与第三方开发人员建立合作伙伴关系并扩展整个业务生态系统。 

由于公共 API 可被第三方开发人员用来构建新产品,因此有助于推动创新,是帮助建立新合作伙伴关系的重要工具。 

私有 API 

私有 API 仅可供企业内部的团队访问,不仅能够帮助您解锁数据并促进内部协作,而且还可为企业面向公众的应用(例如您的网站)提供无形的支持。 

由于私有 API 仅供内部用户使用,因此企业可以在构建时充分考虑优化问题。私有 API 还提升了现代应用的可组合性,支持企业根据当前的需求进行调整。开发人员可以在构建微服务时轻松集成私有 API,从而减少团队间的重复工作。 

合作伙伴 API

合作伙伴 API 用于直接集成业务合作伙伴解决方案(例如,当一家航空公司与一家连锁酒店合作时,您可以机票和酒店同订)。合作伙伴 API 不公开提供 — 只有满足两家企业的身份验证 (AuthN) 和授权 (AuthZ) 要求的部分开发人员才可对其进行访问。 

互操作性加强了与合作伙伴 API 的关系,因为它们打破了孤岛,支持不同企业相互通信。

第三方 API 

第三方 API 可被企业用于访问应用和服务中缺少的数据或功能。这些 API 在第三方服务器上运行,通常提供广泛需要的服务(例如许多电子商务网站使用的 Stripe 支付处理 API)。这些 API 可供企业付费或免费使用,具体视 API 而定。 

由于第三方 API 均由其他开发人员或企业构建,因此可显著节省成本。此外,第三方 API 是企业加快应用开发的一个重要途径,因为开发人员可以立即使用所需功能,无需自行编写。

使用哪些应用语言来创建 API?

几乎任何现代编程语言都可以用来编码 API。在编码 API 时,许多开发人员可能会选择使用一个框架。框架提供了代码库等构建块及其他必要实用程序,有助于更快速、更轻松地使用该语言构建应用。 

每种编程语言一般都有一个或多个开发人员常用的框架。下表列出了几个框架选项(其中许多为开源框架)。

具体选择哪种语言和框架通常取决于项目需求或开发人员的个人偏好。 

API 示例

API 是现代软件开发的一个基本组成部分,其示例不胜枚举。此处,我们只举数例。 

三个 API 示例: 

  • Google Maps Platform —— Google 提供的一个 API,支持您将 Google Maps 嵌入到网站或应用中。 

  • AWS IoT —— AWS IoT API 支持您将物联网上的设备(例如智能家居设备)连接到 AWS 云。这是智能家居自动化系统的一种构建方式。 

  • NGINX Unit Control API —— Unit API 使用 REST 架构来配置开源 NGINX Unit 应用和 Web 服务器。

什么是 API 策略? 

企业需要根据其业务目标来制定现代 API 策略,后者为企业如何设计、开发、管理、治理和保护其 API 设定了方案。 

根据 Gartner《适用于软件工程领导者的五大 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 互联解决方案,以完善传统和微服务架构,与 DevOps 实践保持一致,并支持高性能 API。 

API 类型和 API 互联体验 

过去,全生命周期 API 管理解决方案主要用于管理内部或外部 API 的南北向流量(客户端到后端)。现在,随着云原生基础架构不断生成更多的东西向流量(在企业应用基础架构内的微服务之间),API 的类型也有所增加。

目前,大多数企业使用四种类型的 API: 

  • 内部 API — 仅暴露给企业内的其他应用(及其开发人员),而不暴露给外部用户。内部 API 有助于解锁数据并促进企业内各职能部门之间的协作。 

  • 外部 API — 暴露给企业外部的用户。外部 API 支持与第三方开发人员和您的整个业务生态系统建立合作伙伴关系,并可成为收入来源。 

  • 合作伙伴 API — 暴露给业务合作伙伴。这些 API 不会公开 — 只有满足两家企业的身份验证 (AuthN) 和授权 (AuthZ) 要求的部分开发人员才可对其进行访问。 

  • 第三方 API — 由第三方暴露并位于其服务器上。这些 API 通常用于提供广泛需要的服务(如地图),并专门开发供其他公司使用,一般是收费的。 

API 互联的其他关键要素包括 API 网关(反向代理或 Ingress controller)和 API 开发人员门户。API 网关接受来自客户端的 API 请求,将其定向到相应的 service,并将请求结果融入用户的同步体验中。开发人员门户是一个在线平台,您可以在此发布有助于 API 消费者快速入门的资源,例如外部 API 的目录、完备的文档及示例代码。它还允许第三方开发人员注册其应用,并获得 API 访问凭证。 

多云的挑战

如今,API 和微服务都将被部署在多个环境中 — 公有云、私有云、本地和边缘。随着微服务日益成为高流量公司扩展应用的关键工具,内部 API 流量也大幅增加。 

在复杂的多云环境中,API 端点(endpoint)激增,因此需要采用一种新的 API 管理、治理和安全防护方法。这些分布式环境需要低接触的自动化方法来为开发人员赋能,并支持平台运维团队跨不同的业务线设置安全防护和资源防护。 

确保多云架构的可靠性和安全防护给平台运维团队带来了严峻的挑战。他们需要全面了解应用和 API 流量,并能够跨不同环境应用一致的安全防护和合规策略。平台原生工具的操作方式各不相同,提供了不同程度的可视性和控制力。最终,平台运维团队需要使用其他模型来跨分布式团队和环境创建并应用治理规则。 

API 治理有两种常见模型 — 集中式和分散式。但在现代 API 策略中,尤其是在 API 优先模型中,“自适应治理”的新理念可为 API 开发人员赋能,同时为平台运维团队提供可靠性和安全防护控制能力。 

如欲了解更多信息,请阅读我们的博文《自适应治理可为 API 开发人员提供其所需的自主权》。

API 优先工具的重要性

云原生环境是松散耦合的系统,通常使用容器、service mesh(服务网格)和微服务构建而成。上述资源通过 API 相互通信,并通常通过声明性 API 进行自主管理。这些技术能够构建容错性好、易于管理和便于观察的系统。 

API 互联强调使用云原生技术,特别是使用 API 优先方法来管理基础架构和 API 生命周期。 这对于使用持续集成/持续交付 (CI/CD) 实践实现大规模自动化运行尤为重要。CI/CD 可通过自动化功能帮助您在 API 和应用的整个生命周期(编写、交付和更新)对其进行高效管理。它还支持在早期集成并嵌入安全策略,然后将其应用于未来 API,助力实现“安全左移”,让安全防护融入整个开发流程,直至投入生产环境。 

API 互联和 API 主导的互联策略之间有何区别?

 “API 主导的互联”是实现数字化转型和企业整体 API 策略的特定架构方法。它使用分层的方法按功能对企业的 API 进行分类: 

  • 系统 API 用于从记录系统中获取原始数据,并通过一种可靠的方式将其暴露给上游 API 

  • 流程 API 可编排多个下游系统 API,以汇总数据并将业务逻辑应用于数据 

  • 体验 API 支持面向用户的交互,并可在移动和 Web 应用中重复使用 

无论您使用何种架构模式对 API 进行分类,API 互联都是一种在云原生环境中治理和操作 API 的综合方法。 


NGINX 唯一中文官方社区 ,尽在 nginx.org.cn

更多 NGINX 相关的技术干货、互动问答、系列课程、活动资源: 开源社区官网 | 微信公众号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1210741.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2019年五一杯数学建模B题木板最优切割方案解题全过程文档及程序

2019年五一杯数学建模 B题 木板最优切割方案 原题再现 徐州某家具厂新进一批木板如表 1 所示,在家具加工的过程中,需要使用切割工具生产表 2所示的产品。假设:木板厚度和割缝宽度忽略不计。   请为该家具厂给出如下问题的木板最优切割方…

队列与堆栈:原理、区别、算法效率和应用场景的探究

队列与堆栈:原理、区别、算法效率和应用场景的探究 前言原理与应用场景队列原理应用场景: 堆栈原理应用场景递归原理和堆栈在其中的作用递归原理堆栈作用 队列与堆栈区别队列堆栈算法效率 前言 本文主要讲解数据结构中队列和堆栈的原理、区别以及相关的…

requests库验证错误解决方法

用户在使用requests库进行http请求时,遇到了一个AuthenticationRequired(身份验证必须)的错误。但是,当使用urllib.request.urlopen进行相同的操作时,却能够成功。同时,用户提供了自己的系统信息&#xff0…

GPT 学习法:恐怖算力 + 精确算法,实现复杂文献轻松的完美理解、在庞大的不确性中找到确定性

GPT 学习法:恐怖算力 精确算法,实现复杂文献轻松的完美理解、在庞大的不确性中找到确定性 复杂文献 - 恐怖算力 精确算法,复杂文献轻松的完美理解GPT 理解法 - 举例子、归纳、逻辑链推导本质、图示、概念放大器实战案例:学习高精…

省级数字经济政策词频分析数据集(2005-2023)

数据简介:当今社会,数字经济已经成为推动世界经济发展和社会变革的重要动力。随着信息技术的迅猛发展和智能化技术的普及应用,数字经济政策的制定和实施变得愈发重要。数字经济政策的词频分析成为了对政策文件和宣言进行深度解读的关键工具。…

Vue 中 slot 是什么?作用?分类?如何实现?

结论先行: slot 插槽,是子组件提供给父组件使用的一个占位符,父组件可以在这个占位符中填充任何模板代码。主要作用就是更好的拓展和定制化组件,例如弹窗组件、表格组件等。分为默认插槽、具名插槽和作用域插槽。 其中前两个都是…

SecureCRT 9.2.4最新

SecureCRT是一款功能强大的终端仿真软件,它通过提供安全的、高效的会话,帮助用户在远程设备上完成各种任务。SecureCRT具有出色的性能和可靠性,能够处理复杂的网络环境,提供高效的远程访问和管理。 SecureCRT的主要特点包括&…

【跨境电商独立站新手入门手册】

一直想要更新一个独立站的系列合集,用小白也看得懂的方式阐述怎么从0到1搭建并运营一个独立站,并且后续我也会录制成视频。 今天,它来了。 这是《跨境电商独立站新手入门手册》系列的第一篇。 你是否有过这样的经历:当你在网上浏…

实用篇-ES-RestClient操作文档

一、RestClient案例准备 对es概念不熟悉的话,先去看上面的 实用篇-ES-索引库和文档,不建议基础不牢就直接往下学 ES官方提供了各种不同语言的客户端,用来操作ES。这些客户端的本质就是组装DSL语句,通过http请求来发送给ES。 官…

zabbix的服务器端 server端安装部署

zabbix的服务器端 server 主机iplocalhost(centos 7)192.168.10.128 zabbix官网部署教程 但是不全,建议搭配这篇文章一起看 zabbixAgent部署 安装mysql 所有配置信息和Zabbix收集到的数据都被存储在数据库中。 下载对应的yum源 yum ins…

openGauss Summit 2023 | Call for Sponsor、Speaker、Demo

数据库作为千行万业数据的基石,也是推动数字经济发展的核心。随着数字经济的蓬勃发展,数据库将迎来更加广阔的应用场景和更加迫切的需求。openGauss 社区旨在汇聚产、学、研、用多方力量,聚焦基础软件核心能力的构建,引领国内数据…

煮蛋器产业研究:全球市场将超过10亿美元

近年来,随着科技的迅猛发展,煮蛋器市场逐渐呈现出多元化和智能化趋势。厂商们不断推出新款煮蛋器,配备更多功能以满足消费者的个性化需求。同时,煮蛋器也受益于烹饪技术的创新,如加热控制和计时功能等的引入&#xff0…

44. Adb调试QT开发的Android程序实用小技巧汇总

1. 说明 使用QT开发Android应用时,如果程序本身出现了问题,很难进行调试。不像在linux或者windows系统中,可以利用QtCreator软件本身进行一些调试,安卓应用一旦在系统中安装后,如果运行中途出现什么BUG,定位问题所在很麻烦。不过,好在有adb这种调试工具可以代替QtCreat…

笔记无法正常展示,小红书笔记收录分析!

很多时候,小红书收录意味着你的流量其实是被记录了,这是有利于你的笔记曝光的一个表现,今天就来带大家一起分享下,为什么笔记无法正常展示,小红书笔记收录分析! 一、什么叫小红书笔记收录 不可能所有的笔记…

希尔顿集团旗下酒店为宾客带来冬日活力新玩法

中国上海,2023年11月14日 - 据希尔顿集团发布的《2024年趋势报告》显示,新一代亚洲旅行者正在崛起,也更重视高品质、个性化的服务。希尔顿集团紧随市场脉搏,在即将到来的冬季为宾客精心策划了一系列特色体验,凭借其遍布…

Visual Studio 2019 C# 断点调试代码内存窗口显示无法计算表达式的解决问题

查看如下界面,发现右下角内存1窗口显示无法计算表达式: 按照如下步骤操作即可: 如果s1局部变量此时有值,但是内存窗口还是无法计算表达式我们可以

微同城生活圈小程序源码系统 专业搭建本地生活服务的平台 带完整搭建教程

在互联网的影响下,越来越多的用户开始依赖手机进行日常生活。为了满足本地居民的需求,源码小编来给大家分享一款全新的微同城生活圈小程序源码系统。该系统旨在为本地居民提供一站式的生活服务解决方案,让您的生活更加便捷、高效。 以下是部…

使用 Cloudflare Worker 免费搭建网址导航网站

开源项目 GitHub:https://github.com/sleepwood/CF-Worker-Dir/ CloudFlare Worker:https://workers.cloudflare.com/ 搭建教程 首先,进入cloud flare - Worker 截图20200224180010.png 在 Cloudflare Worker 管理页面创建一个新的 Work…

NCP1654BD65R2G功率因数校正控制器 用于紧凑和坚固的连续导通模式预转换器

NCP1654BD65R2G是一款高效的同步整流控制器,主要用于DC/DC转换器和LED驱动器等应用。该控制器采用了高性能的反馈控制算法,可以实现高达95%以上的转换效率。此外,NCP1654BD65R2G还具有多种保护功能,如过流保护、过热保护、欠压保护…

【Linux】软硬链接和动静态库

软硬链接 软硬链接的区别: **软链接:**是一个独立文件,有自己独立的 inode 和 inode 编号。**硬链接:**不是一个独立的文件,它和目标文件使用的是同一个 inode。硬链接就是单纯的在 Linux 指定的目录下,给…