什么是网络API以及用例

什么是API?

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

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

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

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

增删改查    HTTP功能   动作用例
createpost远程配置网络添加虚拟 LAN (VLAN)
readget通过遥测列出网络设备远程列出网络中的设备
updateput/patch修改网络配置更改 VLAN 的名称
deletedelete删除未使用的 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”,获取更多技术分享和最新产品动态。

### 设计 E2E 测试用的方法 #### 1. 明确测试目标 在设计端到端测试用之前,需明确测试的具体目标。这包括确认哪些业务流程需要被验证以及预期的结果是什么。通过这种方式可以确保测试覆盖完整的用户交互路径并满足实际需求[^3]。 #### 2. 列举典型场景 基于应用程序的功能特性列举出一系列典型的使用案作为基础来构建测试脚本。这些场景应该能够代表大多数用户的常规行为模式,并且尽可能全面地反映产品的核心价值主张[^4]。 如,在电子商务网站上购买商品的过程可能是一个很好的候选者;对于社交平台,则可能是注册新账户、发布帖子等操作。 #### 3. 编写详细的前置条件 为了使每次执行都能获得一致性的结果,必须清楚描述每条测试记录所需的初始状态或环境设置。比如登录特定类型的账号、准备某些数据集或是配置特殊的网络状况等等[^1]。 ```python def setup_test_environment(): # 设置数据库中的初始数据 db.insert_initial_data() # 登录管理员账户 login_as_admin() ``` #### 4. 描述具体的操作步骤 按照真实的用户体验顺序逐步说明如何完成某项任务。此部分应尽量贴近最终用户的真实体验,避免过度依赖内部实现细节。同时也要注意保持足够的灵活性以便应对未来可能出现的小幅变动而不至于完全失效[^2]。 ```plaintext 给定 用户已成功登录系统, 当 用户点击 "创建订单" 按钮 并填写必要信息 后, 那么 页面应当显示新的订单详情页面; 并且 数据库中存在一条对应的新订单记录。 ``` #### 5. 定义期望输出/断言 最后一步是要明确规定每个动作之后所期待看到的行为变化或者是返回的数据形式。这是判断测试是否成功的标准之一。可以通过检查UI元素的状态、API响应码或者其他任何可观察的现象来进行验证。 ```javascript expect(page).toHaveText('Order Created Successfully'); expect(database.queryLastRecord()).toEqual({ status: 'created', }); ``` #### 6. 考虑异常情况处理 除了正常的业务流之外,还需要考虑各种潜在错误情形下的表现,如输入非法参数、服务不可达等情况。这部分有助于提高系统的健壮性和容错能力。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值