Add the Axum and PostgreSQL service for profiles, defaults, and feedback records, including migrations, OpenAPI documentation, and development identity handling for version 0.1.0.
4.2 KiB
4.2 KiB
教学反馈助手 API 使用指南
1. 启动服务
在 server/.env 中配置 DATABASE_URL 后执行:
cd server
cargo run --bin migrate
cargo run
默认地址取决于 .env 中的 HOST 和 PORT。使用示例配置时,可访问:
- Scalar 交互文档:http://127.0.0.1:8080/scalar
- OpenAPI JSON:http://127.0.0.1:8080/openapi.json
- 健康检查:http://127.0.0.1:8080/health
如果未配置 DATABASE_URL,服务仍可启动并访问健康检查和 API 文档,但业务接口返回 503。
2. 在 Scalar 中直接测试
打开 /scalar,选择接口后点击 Test Request。业务接口已经预填以下开发用户 ID:
X-User-Id: 5a4da7f0-d70c-465f-bcab-124c504aa9f0
请求体接口也已提供可发送的默认 JSON。建议按以下顺序测试:
- 执行
GET /health,确认database_configured为true。 - 执行
GET /api/v1/profile-defaults,即使用户未保存过预设也会返回系统默认值。 - 执行
PUT /api/v1/profile-defaults,可直接发送预填的美术课预设。 - 执行
POST /api/v1/profiles,可直接发送预填档案;保存响应中的id。 - 将真实档案
id填入{profile_id},测试单条查询、更新或删除。 - 执行
POST /api/v1/feedback-records。默认profile_id为null,无需档案即可直接创建。 - 如需关联档案,将第 4 步得到的
id写入profile_id。创建后保存反馈响应中的id。 - 将真实反馈
id填入{record_id},测试删除接口。
OpenAPI 中的 11111111-... 和 22222222-... 仅用于展示路径参数格式,并不是数据库预置记录。调用按 ID 查询、更新或删除的接口时,必须换成创建或列表接口返回的真实 ID。
3. 常用请求示例
健康检查
curl http://127.0.0.1:8080/health
创建学生档案
curl -X POST http://127.0.0.1:8080/api/v1/profiles \
-H 'Content-Type: application/json' \
-H 'X-User-Id: 5a4da7f0-d70c-465f-bcab-124c504aa9f0' \
-d '{
"name": "小谢",
"grade": "艺术类",
"subject": "美术",
"academic_year": 2026,
"term": "暑",
"guardian_title": "小谢妈妈",
"start_time": "18:00",
"end_time": "19:00"
}'
创建不关联档案的反馈
curl -X POST http://127.0.0.1:8080/api/v1/feedback-records \
-H 'Content-Type: application/json' \
-H 'X-User-Id: 5a4da7f0-d70c-465f-bcab-124c504aa9f0' \
-d '{
"profile_id": null,
"feedback_date": "2026-07-15",
"content": "今天完成了色彩搭配练习,构图有明显进步。"
}'
筛选反馈记录
curl 'http://127.0.0.1:8080/api/v1/feedback-records?profile_id=<真实档案ID>' \
-H 'X-User-Id: 5a4da7f0-d70c-465f-bcab-124c504aa9f0'
4. 身份和数据隔离
当前尚未接入微信登录,所有业务接口临时使用 X-User-Id 标识用户。相同 UUID 可以访问自己创建的数据,不同 UUID 之间的数据互相不可见。
X-User-Id 缺失时返回 401,格式不是 UUID 时返回 400。接入微信登录后,应由后端根据登录凭据确定用户身份,客户端不再直接提交该请求头。
小程序开发客户端当前使用同一个测试 UUID,并默认连接 http://127.0.0.1:8080。可在小程序“我的”页面修改 API 地址并执行健康检查。真机或正式环境应使用已配置为微信 request 合法域名的 HTTPS 地址。
5. 响应状态码
| 状态码 | 含义 |
|---|---|
200 |
查询或更新成功 |
201 |
创建成功 |
204 |
删除成功,无响应体 |
400 |
参数格式或业务校验失败 |
401 |
缺少 X-User-Id |
404 |
记录不存在或不属于当前用户 |
500 |
数据库查询或服务内部错误 |
503 |
未配置数据库连接 |
错误响应统一为:
{
"error": "错误说明"
}
6. OpenAPI 维护方式
/openapi.json 在服务运行时由 utoipa 根据 Rust 路由注解生成,Scalar 使用同一份规范。新增或修改接口时,需要同时更新处理函数上的 #[utoipa::path]、请求/响应 schema 注释和示例;规范完整性测试会检查操作数量、接口说明和默认身份参数。