Apifox 测试项目的案例
一、环境与 Apifox 准备
| 项 | 说明 |
|---|---|
|
服务地址 |
|
|
数据库 |
MySQL + Flyway 迁移;种子账号见 |
|
默认账号 |
管理员: |
|
种子商家 ID |
|
Apifox 导入(推荐)
- 启动 platform:
mvn spring-boot:run - Apifox → 导入 → OpenAPI:
http://localhost:8089/v3/api-docs - 或浏览器打开 Swagger:
http://localhost:8089/swagger-ui/index.html
环境变量(Apifox 环境里配置)
| 变量 | 示例 | 用途 |
|---|---|---|
|
|
|
所有请求前缀 |
|
|
登录后写入 |
|
|
|
登录后写入 |
商家端接口 |
|
|
handshake 后写入 |
设备拉活动/模板 |
|
|
|
商家查询参数 |
|
|
handshake 返回 |
设备路径参数 |
|
|
创建活动后 |
后续绑定 |
|
|
管理端创建后 |
版本/绑定 |
统一响应格式
{ "success": true|false, "message": "...", "data": { ... } }
鉴权规则(SecurityConfig)
- 公开:
/api/v1/auth/**、Swagger、/api/v1/device/**、/api/v1/ai/** - 管理端:
/api/v1/admin/**→ 需 ADMIN + Bearer JWT - 商家端:
/api/v1/merchant/**→ 需 ADMIN / MERCHANT_OWNER / MERCHANT_STAFF
Apifox 可在「登录」接口的后置脚本里写:pm.environment.set("adminToken", json.data.token)。
二、按模块测试的接口
第 0 层:连通与文档(必做)
| 方法 | 路径 | 鉴权 | 说明 |
|---|---|---|---|
|
GET |
|
无 |
验证服务、导入 Apifox |
|
GET |
|
无 |
浏览器对照参数 |
第 1 层:认证(必做,Apifox 前置)
| 方法 | 路径 | 鉴权 |
|---|---|---|
|
POST |
|
无 |
用例
- 正确账号 →
success=true,data.token非空 - 错误密码 →
success=false - 分别测 admin / merchant,保存两个 token
第 2 层:设备端(无需用户 JWT,适合入门)
| 方法 | 路径 | 鉴权 | 说明 |
|---|---|---|---|
|
POST |
|
无(deviceCode+secret) |
换 |
|
POST |
|
无 |
需先有设备;3s 限流 |
|
GET |
|
Header: |
活动列表 |
|
GET |
|
同上 |
活动下模板 |
前置数据:库中需有 devices 记录(可用商家端创建设备,或 SQL 插入,见 DEVICE_HANDSHAKE_TEST.md)。
推荐链路:handshake → heartbeat → activities → templates
第 3 层:商家端(需 merchantToken)
| 方法 | 路径 | 说明 |
|---|---|---|
|
GET |
|
分页列表 |
|
GET |
|
详情 |
|
POST |
|
创建活动 |
|
POST |
|
绑定模板版本(推荐) |
|
POST |
|
旧接口:按 templateId 绑定 |
|
GET |
|
查询已绑版本 |
|
POST |
|
活动绑设备 |
|
GET |
|
活动设备列表 |
|
GET |
|
商户设备列表 |
|
POST |
|
创建设备(供 handshake 用) |
|
GET |
|
可选模板版本 |
|
GET |
|
当前可能返回禁用提示(迁移期) |
课堂主流程(E2E 简版)
- 商家登录
- 创建设备 → 记下
deviceCode/secret - 创建活动
- (需管理端先有模板版本)绑定 template-versions + devices
- 设备 handshake → 拉 activities/templates
第 4 层:管理端核心(需 adminToken)
4.1 模板与版本(业务核心,建议重点练)
| 方法 | 路径 |
|---|---|
|
GET |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
PUT |
|
|
DELETE |
|
|
POST |
|
|
POST |
|
|
POST |
|
课堂建议:先测 GET 列表/详情 和 POST 创建模板+版本(body 用 JSON,package 可先填 URL 字符串);ZIP 上传(package-upload、package-zip)放选做(multipart,Apifox 要配 form-data)。
4.2 商户与设备
| 方法 | 路径 |
|---|---|
|
GET/POST/PUT |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
GET/PUT |
|
4.3 AI 路由(与 Resolve 配套,适合「接口编排」作业)
| 方法 | 路径 |
|---|---|
|
GET/POST/PUT |
|
|
GET/POST/PUT |
|
|
GET/POST |
|
|
PUT |
|
|
GET/POST/PUT |
|
文档与示例见仓库:ADMIN_CRUD_API_DOC.md、RESOLVE_API_TEST_GUIDE.md。
4.4 模板类型 / 设计器(选做)
| 前缀 | 说明 |
|---|---|
|
|
类型 CRUD |
|
|
草稿、资产、预览、发布(含文件上传) |
第 5 层:AI Resolve(公开,无需登录)
| 方法 | 路径 |
|---|---|
|
POST |
|
典型 body:{ "capability": "segmentation" } 或带 prefer、merchantId。
前置:库里有 model_providers、provider_capabilities(可跟 RESOLVE_API_TEST_GUIDE.md 插测试数据)。
推荐作业:先 Admin 建 Provider/Capability/Policy → 再调 Resolve 验证路由结果。
第 6 层:系统 RBAC / 财务(进阶,可选)
| 模块 | 路径前缀 |
|---|---|
|
用户/角色/菜单/权限 |
|
|
会员套餐/计价规则 |
|
|
财务 |
|
|
订阅/点数/支付 |
|
|
定制需求 |
|
部分接口带 @PreAuthorize 细粒度权限;纯 ADMIN 角色一般仍可测,适合讲 403 / RBAC 的对比实验。
三、Apifox 测试方案(建议 4 个实验)
实验 1:认证与环境(1 课时)
目标:掌握 Apifox 环境变量、Bearer、断言。
| 步骤 | 接口 | 断言 |
|---|---|---|
|
1 |
|
|
|
2 |
|
401 |
|
3 |
带 |
200 + |
|
4 |
merchant 登录重复 1–3 |
角色对比 |
实验 2:设备握手与拉取(1 课时)
目标:两种凭证(用户 JWT vs 设备 token)、路径参数。
| 步骤 | 接口 |
|---|---|
|
1 |
商家 |
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
错误 secret / 无 token |
扩展:连续 handshake 触发限流(文档:30s 窗口最多 10 次)。
实验 3:商家 + 管理端业务链(2 课时)
目标:跨角色、变量传递、CRUD 顺序。
登录创建模板+版本登录创建活动绑定 template-versions + devicehandshakeGET activities/templatesAdminMerchantDevice
Apifox 测试套件 按顺序跑,上一步响应脚本提取 templateVersionId、activityId、deviceId。
实验 4:AI 路由与 Resolve(1–2 课时)
| 步骤 | 角色 | 接口 |
|---|---|---|
|
1 |
Admin |
创建 Provider → Capability →(可选)API Key |
|
2 |
Admin |
创建 Routing Policy |
|
3 |
无鉴权 |
|
|
4 |
断言 |
|
四、Apifox 配置要点(课堂常踩坑)
- 端口:文档里偶有
8080,当前仓库默认 8089。 - Header 名称:
Authorization: Bearer <token>(不是token自定义头,除非你们自己改过滤器)。 - 商家接口:多数要带
merchantId=1查询参数。 - 设备 activities/templates:需要 deviceToken,不是 adminToken。
- 文件上传:
multipart/form-data,选做;未配 OSS 时上传可能失败,不影响 JSON CRUD 实验。 - 不要测生产库:
application.yml里若是远程 DB,学校应改为本地 MySQL + 独立库名。 - payments:商家/管理端支付相关接口可能返回「迁移期禁用」,可当作 业务开关 案例,不必判为 Apifox 配错。
五、接口优先级速查(给老师勾选)
| 优先级 | 接口群 | 适合 |
|---|---|---|
|
P0 |
auth/login、admin/templates(GET)、merchant/activities(GET) |
第一节课 |
|
P1 |
device 全链路、merchant 活动/设备 CRUD |
核心业务 |
|
P2 |
admin providers/routing + ai/resolve |
编排与断言 |
|
P3 |
admin merchants/devices、template-versions |
联调作业 |
|
P4 |
designer 上传、finance、system RBAC |
进阶选修 |
六、与课堂交付物对应
| 交付物 | 内容 |
|---|---|
|
Apifox 项目 |
从 |
|
测试集合 |
实验 1–4 四个 Folder + 前置/后置脚本 |
|
测试报告 |
每个用例:请求、预期状态码、 |
|
扩展题 |
403 无权限、handshake 限流、resolve 无 provider 数据 |
更多推荐




所有评论(0)