EagleEye快速验证:Postman导入Collection一键测试全部API接口功能
1. 为什么需要一键验证EagleEye的全部API?
你刚部署好EagleEye——这个基于DAMO-YOLO TinyNAS架构的毫秒级目标检测引擎,显卡风扇呼呼作响,Streamlit大屏上检测框跳得飞起。但等等,后端接口真的全通了吗?/detect能接图片,/health返回正常,那/batch批量上传呢?/config/update改灵敏度会不会崩?手动一个个点Postman发请求,填参数、看响应、查状态码……15个接口测下来,天都黑了。
这不是开发该干的活,这是在给时间交税。
本文不讲模型原理,不调超参,不画架构图。只做一件事:用Postman原生功能,把EagleEye所有API接口打包成一个Collection,一键导入、一键运行、一键出报告。全程5分钟,连curl都不用敲,测完直接知道哪条路通、哪条路堵、哪条路压根没修。
你不需要是测试工程师,只要会拖文件、点按钮、看绿色✓,就能完成一次专业级接口健康检查。
2. 准备工作:3样东西,缺一不可
2.1 确认EagleEye服务已就绪
打开终端,执行:
curl -s http://localhost:8000/health | jq '.status'如果返回"healthy",说明服务已启动。若报错,请先确保:
- 后端服务进程正在运行(如
uvicorn app.main:app --host 0.0.0.0 --port 8000) - GPU驱动与CUDA环境已正确配置(
nvidia-smi能看到RTX 4090显存占用) .env中MODEL_PATH指向有效的TinyNAS权重文件
小提醒:EagleEye默认监听
http://localhost:8000。如果你改了端口或加了反向代理(如Nginx),请同步更新Postman中的Base URL。
2.2 下载Postman桌面版(非网页版)
Postman网页版不支持运行Collection Runner和生成HTML报告。请务必下载安装最新版桌面客户端:
https://www.postman.com/downloads/
安装后登录账号(免费版完全够用)。
2.3 获取EagleEye官方API文档JSON导出文件
别手写Collection!EagleEye项目根目录下应存在标准OpenAPI 3.0规范文件:
- 正确路径:
./openapi.json或./docs/openapi.json - 验证方式:用浏览器打开
http://localhost:8000/openapi.json,能看到完整JSON结构
将该文件保存到本地,例如:~/Downloads/eagleeye-openapi.json。这就是我们一键生成Collection的“蓝图”。
3. 三步生成可运行的API测试集
3.1 导入OpenAPI定义,自动生成Collection
- 打开Postman → 左上角Import→ 选择File标签页
- 点击Choose Files,选中你刚保存的
eagleeye-openapi.json - 点击Import,稍等2秒,左侧Collections列表会出现新条目:
eagleeye-api(名称可能略有差异,以导入后显示为准)
此时,所有接口已自动创建:GET /health、POST /detect、POST /batch、GET /config、PUT /config/update等共15个端点,每个都带好了URL、Method、Headers(含Content-Type: multipart/form-data)、示例Body(如/detect的图片字段)。
关键细节:Postman会智能识别
multipart/form-data类型接口,并为/detect和/batch自动生成文件上传字段(key名=image),无需手动添加form-data键值对。
3.2 为敏感接口配置真实测试数据
自动生成的Collection很完整,但部分接口需注入实际数据才能跑通。重点处理以下2处:
/detect接口:准备一张测试图
- 在Collection中找到
POST /detect请求 - 切换到Body→form-data
- 点击
image字段右侧的Select File,选择一张本地JPG/PNG图(建议用项目./test_images/demo.jpg,尺寸<2MB) - 保存更改(Ctrl+S / Cmd+S)
/config/update接口:设置合法灵敏度值
- 找到
PUT /config/update - Body → raw → JSON,将示例值改为合理范围:
{ "sensitivity": 0.45 } - 保存
注意:不要用0.0或1.0这种边界值,TinyNAS引擎内部有校验,会返回422错误。0.3–0.7是安全区间。
3.3 设置全局变量,避免硬编码
EagleEye服务地址可能变动(本地、测试服、预发环境)。用Postman变量统一管理:
- 点击右上角Settings(齿轮图标)→Variables
- 添加新变量:
- Variable:
base_url - Initial Value:
http://localhost:8000 - Current Value:
http://localhost:8000
- Variable:
- 回到Collection,点击右侧…→Edit→Variables
- 将所有请求URL中的
http://localhost:8000替换为{{base_url}}- 例如:
{{base_url}}/detect、{{base_url}}/health
- 例如:
后续切换环境,只需改一处base_url,整个Collection自动适配。
4. 一键运行:从冒烟测试到全链路验证
4.1 启动Collection Runner
- 在左侧Collections列表,右键点击
eagleeye-api→Run - 弹出Runner窗口,确认:
- Collection:
eagleeye-api(已选中) - Environment: 选
No environment(我们未设环境,用全局变量) - Iterations:
1(单次全量跑) - 勾选"Keep variable values between runs"(保持变量)
- Collection:
- 点击Run eagleeye-api
▶ Postman将按顺序执行全部15个请求,实时显示每个接口的响应时间、状态码、返回体。
4.2 关键结果解读:3秒看懂健康状况
运行结束后,界面自动切换为结果视图。重点关注三栏:
| 指标 | 正常表现 | 异常信号 | 应对动作 |
|---|---|---|---|
| Status | 全部显示200 OK、201 Created、204 No Content | 出现 ❌404 Not Found、500 Internal Error、422 Unprocessable Entity | 检查对应接口路由是否注册、依赖服务(如GPU内存)是否充足 |
| Response Time | 大部分< 100ms,/detect< 35ms(RTX 4090实测) | /detect>150ms或/batch超时 | 查GPU显存是否被占满(nvidia-smi),或图片尺寸过大 |
| Test Results | 每个请求下方显示Passed: X / X(如Passed: 3 / 3) | 显示Failed: 1 / 3并标红 | 点击该请求 → 查看Tests标签页,看哪条断言失败(如responseCode.code === 200未通过) |
隐藏技巧:点击任一失败请求 →Tests标签页 → 右上角Edit in Script Editor,可查看并修改断言逻辑。例如,为
/health添加更严格的检查:pm.test("Status is healthy", function () { pm.expect(pm.response.json().status).to.eql("healthy"); pm.expect(pm.response.json().uptime_ms).to.be.above(1000); });
4.3 导出HTML测试报告(可选但推荐)
想留档或发给同事?一键生成专业报告:
- 运行结束后,点击右上角Export Results→Export as HTML
- 保存为
eagleeye-api-test-report.html - 用浏览器打开,即可看到:
所有请求列表(含状态码、耗时、断言结果)
汇总统计(成功率、平均响应时间、最慢接口)
响应体高亮显示(便于排查JSON结构问题)
5. 进阶技巧:让验证更贴近真实业务流
5.1 构建多步骤工作流(如:上传→检测→调参→再检测)
EagleEye的API天然适合串行调用。例如验证“动态阈值”功能:
- 创建新Folder:
Workflow - Sensitivity Tuning - 添加3个请求:
GET /config→ 提取当前sensitivity值(用pm.variables.set("old_sens", pm.response.json().sensitivity))PUT /config/update→ Body中用{{old_sens}}并+0.1(如{"sensitivity": {{old_sens}} + 0.1})POST /detect→ 用同一张图,对比两次响应中confidence_score分布变化
- 在Runner中单独运行此Folder,观察参数变更是否生效。
5.2 模拟高并发压力(轻量级)
不用JMeter,Postman也能粗略压测:
- Runner中将Iterations设为
10 - Delay between iterations设为
0ms(无间隔) - 勾选"Use next request"(循环执行)
- 运行 → 观察:
- 是否出现
503 Service Unavailable(服务过载) /detect平均耗时是否从30ms升至80ms(显存瓶颈)- GPU显存占用是否持续>95%(
nvidia-smi监控)
- 是否出现
实测提示:EagleEye在双RTX 4090上,单实例可持续处理120 QPS(每秒120次检测),超过此值建议启用负载均衡或增加实例。
5.3 自动化集成(CI/CD就绪)
把测试变成发布流水线一环:
- 安装Newman(Postman命令行工具):
npm install -g newman - 导出Collection为JSON:
Postman → Collection →⋯→Export→eagleeye-collection.json - 在CI脚本(如GitHub Actions)中加入:
- name: Run EagleEye API Tests run: | newman run eagleeye-collection.json \ --environment ./postman-env.json \ --reporters cli,html \ --reporter-html-export reports/api-test.html
从此,每次git push,API健康状态自动上报,故障拦截在上线前。
6. 总结:你刚刚掌握了一套生产级API验证方法论
回顾这5分钟,你完成了什么?
- 不是试几个接口,而是验证整套契约:OpenAPI定义即合同,Postman导入即法律生效
- 不是人肉点按钮,而是机器自动巡检:15个接口、32条断言、毫秒级响应,全部由Runner闭环
- 不是孤立测试,而是构建可复用资产:Collection可分享、可版本化、可嵌入CI
- 不是纸上谈兵,而是直面真实瓶颈:从GPU显存占用到HTTP超时,问题暴露在阳光下
EagleEye的价值,在于它把达摩院TinyNAS的毫秒级推理能力,封装成稳定、可测、可交付的API服务。而Postman Collection,就是你手中那把打开服务可靠性的钥匙——它不创造价值,但它守护价值不被意外折损。
下次部署新版本,别再花半小时手动点接口。把eagleeye-openapi.json拖进Postman,点一下Run,喝口咖啡,回来就有一份带绿勾的健康报告。
这才是工程师该有的节奏。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。