# Apifox 指南 —— 课程资源(门户管理)(已拆分) > 重要说明:本指南已拆分为两份更清晰的指南: > - 门户端:docs/apifox/课程资源-门户.md > - 管理端:docs/apifox/课程资源-管理.md > > 本文件暂作过渡保留,其用例覆盖与“门户端”一致。 - baseURL: `http://localhost:8080` - 认证: - 请求头 `Authorization: Bearer `(先调用登录接口获取 token) ## 用例总览 覆盖“新增 / 编辑 / 删除 / 上下架”的成功、失败、越权三类场景。 ## 前置:登录获取 token - POST /login - Body: `{ "username": "admin", "password": "123456" }` - 断言:`code == 200`,保存 `data.token` → 变量 `token` ## 用例 1:新增(成功) 0) 获取专业/课程 ID(前置) - GET /portal/major/list → 选择一个 `id` 作为 `majorId` - GET /portal/course/list → 选择一个 `id` 作为 `courseId` 1) 上传压缩包(选做,若使用文件型) - POST /portal/upload/oss - Headers: Authorization: Bearer {{token}} - Form-Data: `scene=resource.archive`, `dir=resource`, `publicUrl=true`, `file=@/path/demo.zip` - 断言:`code == 200`,保存 `data.url` 为 `fileUrl` 2) 新增资源 - POST /portal/resource - Headers: Authorization: Bearer {{token}} - Body(文件型示例): ```json { "majorId": 1, "courseId": 11, "resourceName": "算法作业参考", "resourceType": 0, "fileUrl": "{{fileUrl}}", "fileHash": "demo-sha256", "fileSize": 1024, "description": "仅供学习参考" } ``` - 断言:`code == 200`,`data.id` 不为空(保存为变量 `rid`) ## 用例 2:编辑(成功 / 失败 / 越权) - 成功: - PUT /portal/resource - Body:`{ "id": {{rid}}, "resourceName": "算法作业参考(修订)", "description": "补充说明" }` - 断言:`code == 200` - 失败(状态冲突): - 准备:先由管理端把该资源审核为“通过”,或手动将状态置为 1 - 再尝试 PUT /portal/resource 编辑 → 断言:`code != 200` 且 `msg` 包含“已通过资源请先下架” - 越权: - 使用另一个普通用户登录,PUT /portal/resource 修改 rid → 断言:`code != 200` 且 `msg` 包含“无权限编辑他人资源” ## 用例 3:下架(成功 / 越权 / 冲突) - 成功: - PUT /portal/resource/{{rid}}/offline - Body:`{ "reason": "内容更新" }` - 断言:`code == 200` - 越权: - 使用非上传者账号调用上述接口 → 断言:`code != 200` 且 `msg` 包含“无权限下架他人资源” - 冲突(非通过状态): - 对“待审/驳回/下架”状态调用 offline → 断言:`code != 200` ## 用例 4:提交上架(成功 / 越权) - 成功: - PUT /portal/resource/{{rid}}/online - 断言:`code == 200` - 越权: - 使用非上传者账号调用 → 断言:`code != 200` 且 `msg` 包含“无权限上架他人资源” ## 用例 5:删除(成功 / 越权 / 冲突) - 成功: - 前置:保证资源处于“待审/驳回/下架” - DELETE /portal/resource/{{rid}} - 断言:`code == 200` - 越权: - 使用非上传者账号调用 → 断言:`code != 200` 且 `msg` 包含“无权限删除他人资源” - 冲突: - 对“已通过”的资源调用 DELETE → 断言:`code != 200` 且 `msg` 包含“已通过资源请先下架或等待审核” ## 常见失败点与解决 - 401 未授权:检查是否携带 `Authorization: Bearer {{token}}` - 500 业务失败: - “无权限*” → 当前登录用户不是该资源上传者 - “已通过请先下架” → 已发布资源需先下架再编辑/删除 - “重复提交” → 同课程下相同文件哈希/外链 URL 冲突