API 概览¶
简介¶
NetPulse 提供统一的API接口来管理各种网络设备。本文档介绍NetPulse支持的所有API接口及其基本用法。
基础信息¶
API 端点¶
- 基础URL:
http://localhost:9000 - API版本: v0.2
- 认证方式: API Key (X-API-KEY Header)
认证¶
所有API请求都需要API Key认证,支持以下三种方式:
-
Header方式(推荐):
-
Query参数方式:
-
Cookie方式:
响应格式¶
所有API响应都采用统一的JSON格式:
响应码说明:
- code: 200 - 请求成功
- code: -1 - 请求失败(错误详情在 message 和 data 中)
完整API端点列表¶
NetPulse 提供以下API端点,所有端点都需要API Key认证。
⭐推荐:优先使用
/device/execute统一接口,它自动识别操作类型,使用更简单。
| HTTP方法 | 端点路径 | 功能说明 | 详细文档 |
|---|---|---|---|
| 设备操作 | |||
POST |
/device/execute |
设备操作(查询/配置)⭐推荐 | 设备操作 API |
POST |
/device/bulk |
批量设备操作 | 设备操作 API |
POST |
/device/test-connection |
设备连接测试 | 设备操作 API |
| 模板操作 | |||
POST |
/template/render |
模板渲染(自动识别引擎) | 模板操作 API |
POST |
/template/render/{name} |
使用指定引擎渲染 | 模板操作 API |
POST |
/template/parse |
模板解析(自动识别解析器) | 模板操作 API |
POST |
/template/parse/{name} |
使用指定解析器解析 | 模板操作 API |
| 任务管理 | |||
GET |
/job |
查询任务状态和结果 | 任务管理 API |
DELETE |
/job |
取消任务 | 任务管理 API |
GET |
/worker |
查询Worker状态 | 任务管理 API |
DELETE |
/worker |
删除Worker | 任务管理 API |
GET |
/health |
系统健康检查 | 任务管理 API |
API 分类¶
1. 设备操作 API¶
设备操作 API 提供设备查询、配置和连接测试功能,支持所有驱动类型。
主要端点:
- POST /device/execute - 统一设备操作(自动识别查询/配置)
- POST /device/bulk - 批量设备操作
- POST /device/test-connection - 设备连接测试
支持的驱动: - Netmiko (SSH) - 通用SSH连接 - NAPALM (跨厂商) - 标准化接口 - PyEAPI (Arista专用) - HTTP/HTTPS API - Paramiko (SSH) - Linux服务器管理
详细说明请参考:设备操作 API
2. 模板操作 API¶
提供配置模板渲染和命令输出解析功能。
主要端点:
- POST /template/render - 模板渲染
- POST /template/parse - 输出解析
支持的引擎: - Jinja2 - 配置模板渲染 - TextFSM - 命令输出解析 - TTP - 配置解析
详细说明请参考:模板操作 API
3. 任务管理 API¶
提供任务状态查询、任务取消和Worker管理功能。
主要端点:
- GET /job - 查询任务状态
- DELETE /job - 取消任务
- GET /worker - 查询Worker状态
- DELETE /worker - 删除Worker
- GET /health - 系统健康检查
详细说明请参考:任务管理 API
支持的驱动类型¶
Netmiko (SSH)¶
- 设备类型: cisco_ios, cisco_nxos, juniper_junos, arista_eos, huawei, hp_comware
- 连接方式: SSH
- 特点: 通用性强,支持大多数网络设备
NAPALM (跨厂商)¶
- 设备类型: ios, iosxr, junos, eos, nxos
- 连接方式: SSH/API
- 特点: 标准化接口,跨厂商兼容
PyEAPI (Arista专用)¶
- 设备类型: Arista EOS
- 连接方式: HTTP/HTTPS API
- 特点: 原生API支持,性能优异
Paramiko (Linux服务器)¶
- 设备类型: Linux服务器(Ubuntu、CentOS、Debian等)
- 连接方式: SSH
- 特点: 原生SSH,支持文件传输、代理连接、sudo等
队列策略¶
NetPulse 支持两种队列策略,系统会根据驱动类型自动选择合适的策略:
设备绑定队列 (pinned)¶
- 适用驱动:Netmiko、NAPALM(SSH/Telnet长连接)
- 特点:每个设备专用Worker,连接复用
- 优势:减少连接建立开销,提升性能
- 使用场景:频繁操作同一设备,需要保持连接状态
FIFO队列 (fifo)¶
- 适用驱动:PyEAPI(HTTP/HTTPS无状态连接)、Paramiko(Linux服务器)
- 特点:先进先出,每次新建连接
- 优势:简单高效,适合无状态操作
- 使用场景:HTTP API调用、长时间运行任务,无需保持连接状态
提示:如果不指定
queue_strategy,系统会根据驱动类型自动选择(Netmiko/NAPALM →pinned,PyEAPI/Paramiko →fifo)
核心参数快速参考¶
必需参数¶
connection_args(连接参数) - 所有操作必需:
{
"device_type": "cisco_ios", // 设备类型
"host": "192.168.1.1", // 设备IP
"username": "admin", // 用户名
"password": "password" // 密码
}
操作参数 - 二选一:
- command:查询操作(如 "show version")
- config:配置操作(如 ["interface Gi0/1", "description Test"])
可选参数¶
driver_args(驱动参数) - 根据驱动类型不同,详见各驱动文档:
options(全局选项) - 控制任务行为:
{
"queue_strategy": "pinned", // 队列策略(自动选择,通常无需指定)
"ttl": 300, // 超时时间(秒)
"parsing": {...}, // 输出解析(可选)
"webhook": {...} // 回调通知(可选)
}
快速上手:大多数场景只需提供
connection_args和command/config,其他参数使用默认值即可。
错误处理¶
错误响应格式¶
所有错误响应都采用统一格式:
HTTP状态码:
- 200 - 请求成功
- 201 - 资源创建成功(任务提交)
- 400 - 请求参数错误
- 403 - 认证失败(API Key无效或缺失)
- 404 - 资源不存在
- 422 - 参数验证失败
- 500 - 服务器内部错误
注意:即使HTTP状态码为200,如果业务逻辑失败,响应中的
code字段仍为-1。
快速上手建议¶
参数选择指南¶
- 必需参数:
connection_args+command/config即可开始使用 - 队列策略:通常无需指定,系统会根据驱动自动选择
- 驱动参数:大多数场景使用默认值,特殊需求再调整
- 超时设置:默认值已足够,慢速设备或批量操作再增加
常见场景¶
- 简单查询:只需
connection_args+command - 配置推送:添加
driver_args.save: true保存配置 - 慢速设备:增加
timeout、read_timeout、delay_factor - 批量操作:使用
/device/bulk接口,系统自动优化
详细指南:查看 API最佳实践 了解更多优化技巧
快速开始¶
1. 检查系统健康¶
2. 测试设备连接¶
curl -X POST -H "Content-Type: application/json" \
-H "X-API-KEY: your-key" \
-d '{
"driver": "netmiko",
"connection_args": {
"device_type": "cisco_ios",
"host": "192.168.1.1",
"username": "admin",
"password": "password"
}
}' \
http://localhost:9000/device/test-connection
3. 执行简单查询¶
curl -X POST -H "Content-Type: application/json" \
-H "X-API-KEY: your-key" \
-d '{
"driver": "netmiko",
"connection_args": {
"device_type": "cisco_ios",
"host": "192.168.1.1",
"username": "admin",
"password": "password"
},
"command": "show version"
}' \
http://localhost:9000/device/execute