什么是网络API以及用例

什么是API?

API(application programming interface,应用程序编程接口)可使不同的应用程序通过一套机制和协议相互通信。同样,网络 API 可实现网络与应用程序、网络浏览器和数据库之间的通信。

使用表征状态传输(REST)架构的 API 通常被称为 RESTful API。这些 API 通常用于网络。RESTful API 使用 HTTP 方法收集和操作数据,而 HTTP 则使用 RESTful API 与数据交互。

OSI 模型等框架为不同供应商的应用程序和设备在网络中相互通信的方式带来了标准化。不同供应商的应用程序接口可以进行交互,因为它们遵循不同方法和框架。

应用程序接口和数据库还可以使用创建、读取、更新和删除(CRUD)函数来存储和修改数据。CRUD 函数与 HTTP 函数有相似之处,如图所示。

增删改查 HTTP功能 动作 用例
create post 远程配置网络 添加虚拟 LAN (VLAN)
read get 通过遥测列出网络设备 远程列出网络中的设备
update put/patch 修改网络配置 更改 VLAN 的名称
delete delete 删除未使用的 VLAN 删除 VLAN

网络 API 用例

几十年来,网络的事实标准一直是命令行界面 (CLI)。随着智能设备和大数据的普及,全球范围内的网络变得越来越大,管理起来也越来越复杂。但是,命令行形式并不是为支持这种大规模部署场景而设计的,它往往会导致繁琐的任务和人为错误。

与此相对的,网络 API则可以帮助网络工程师更轻松地管理网络,减少人工运维中的错误,通过引入自动化和脚本等概念还可以支持可编程网络。

网络 API 的常见用例如下:

| 用例 | 场景 | 价值 |
| 批量部署 | 需要为 1,000 个网络设备部署软件更新。使用单个 API 请求即可一次性完成所有操作。 | 一台一台地配置或更新设备非常繁琐,API 可以提供帮助。 |
| 网络遥测 | 需要远程查看活动设备。 | 使用 API 提供了一种查看设备的简单方法,并且与 CLI 相比,您可以使用高级功能来过滤结果。 |

配置 需要自动执行手动任务,例如配置端口或负载平衡策略。 避免复杂配置的繁琐 CLI 任务。

管理员在使用设备、应用程序和平台时往往没有感知,但 API的存在对于这些交互是必不可少的。以下是一些业内常见的API类型:

| API | 定义 | 使用案例 |
| RESTCONF | 基于 HTTP 的协议,提供编程接口来访问 Yang 中定义的数据 | 使网络管理员能够访问不同的网络设备 |
| OpenFlow | 用于在网络设备中实施软件定义网络的多供应商标准 | 帮助完成负载平衡、路由、拓扑发现和其他任务 |

NETCONF & YANG API 用于管理网络设备的管理网络协议 修改配置、删除、获取网络设备状态

管理员了解 API 的最佳方式是评估如何改进管理网络的方式,并在应对各类真实挑战的过程中不断思考、创新。管理员可以使用不同的工具与网络 API 进行交互,例如以下工具:

  • cURL:一种命令行工具,开发人员使用它将数据传输到服务器或从服务器传输数据。
  • Postman.:用于构建和使用 API 的 API 平台。
  • Visual Studio Code(VS 代码):世界上最先进的代码编辑器之一,网络工程师可以使用 VS Code 工具编写代码,自动执行日常任务,或构建高级自定义脚本,与网络 API 交互。

网络已经走向了可编程时代,网络 API 已成为新的 CLI。编程能力将会成为未来网络工程师的一项有用技能,迎接变革,我们将一起在不断变化的技术行业中茁壮成长。

相关阅读 :

关注vx公号"星融元Asterfusion",获取更多技术分享和最新产品动态。

相关推荐
知白守黑2675 分钟前
keepalived
网络
云飞云共享云桌面13 分钟前
SolidWorks服务器多人使用方案
大数据·运维·服务器·前端·网络·电脑·制造
你疯了抱抱我13 分钟前
【H3C NX30Pro】光猫桥接并使用OpenWRT配置NAS端口映射;配置IPv6、IPv4公网直连内网服务器;
运维·服务器·网络·智能路由器·路由器
迎風吹頭髮3 小时前
UNIX下C语言编程与实践58-UNIX TCP 连接处理:accept 函数与新套接字创建
c语言·网络·unix
猫头虎8 小时前
如何查看局域网内IP冲突问题?如何查看局域网IP环绕问题?arp -a命令如何使用?
网络·python·网络协议·tcp/ip·开源·pandas·pip
hello_25011 小时前
动手模拟docker网络-bridge模式
网络·docker·桥接模式
武文斌7711 小时前
项目学习总结:LVGL图形参数动态变化、开发板的GDB调试、sqlite3移植、MQTT协议、心跳包
linux·开发语言·网络·arm开发·数据库·嵌入式硬件·学习
爱吃喵的鲤鱼11 小时前
仿mudou——Connection模块(连接管理)
linux·运维·服务器·开发语言·网络·c++
爱吃小胖橘11 小时前
Unity网络开发--超文本传输协议Http(1)
开发语言·网络·网络协议·http·c#·游戏引擎
萧鼎12 小时前
Python schedule 库全解析:从任务调度到自动化执行的完整指南
网络·python·自动化