API 参考
API 接口概览
EduBuddy 后端提供标准的 RESTful API,所有接口返回 JSON 格式数据。Base URL 为 http://localhost:3001/api(开发环境)。
认证方式
除登录和注册接口外,所有 API 均需要在请求头中携带 JWT Token:
Authorization: Bearer <your-jwt-token>
Token 在登录/注册时由服务端签发,有效期 7 天。Token 过期或无效时,接口返回 401 Unauthorized。
统一响应格式
成功响应
{
"success": true,
"message": "操作成功", // 可选
"data": { ... } // 具体数据
}
错误响应
{
"success": false,
"message": "错误描述信息"
}
HTTP 状态码规范
| 状态码 | 含义 | 常见场景 |
200 | 成功 | 查询、更新操作成功 |
201 | 创建成功 | 注册用户、创建题目/路线等 |
400 | 请求参数错误 | 必填项缺失、格式不正确 |
401 | 未认证 | Token 缺失、无效或过期 |
403 | 无权限 | 修改/删除他人资源 |
404 | 资源不存在 | 指定 ID 的题目/路线不存在 |
409 | 冲突 | 用户名/邮箱已存在 |
413 | 文件过大 | 上传文件超过 10MB |
429 | 速率限制 | 请求过于频繁 |
500 | 服务器错误 | 数据库错误、AI 调用失败 |
速率限制
| 接口范围 | 限制 |
所有 /api/* 接口 | 200 次 / 15 分钟(每 IP) |
POST /api/questions/generate | 20 次 / 分钟(每 IP) |
POST /api/questions/:id/solve | 20 次 / 分钟 |
POST /api/progress/analyze | 20 次 / 分钟 |
POST /api/learning-paths/generate | 20 次 / 分钟 |
接口总览
认证模块 /api/auth
| 方法 | 路径 | 说明 | 需认证 |
| POST | /auth/register | 用户注册 | 否 |
| POST | /auth/login | 用户登录 | 否 |
| GET | /auth/me | 获取当前用户信息 | 是 |
| PUT | /auth/profile | 更新用户资料 | 是 |
| PUT | /auth/password | 修改密码 | 是 |
| GET | /auth/users | 获取用户列表 | 是 |
题目模块 /api/questions
| 方法 | 路径 | 说明 | AI |
| GET | /questions | 获取题目列表(支持筛选分页) | 否 |
| GET | /questions/:id | 获取单道题目详情 | 否 |
| POST | /questions | 手动创建题目 | 否 |
| POST | /questions/generate | AI 生成题目 | ✅ |
| POST | /questions/extract | 从文本提取题目 | ✅ |
| POST | /questions/:id/solve | AI 解题 | ✅ |
| POST | /questions/:id/submit | 提交答案(AI 批改) | ✅ |
| PUT | /questions/:id | 更新题目 | 否 |
| DELETE | /questions/:id | 删除题目 | 否 |
进度模块 /api/progress
| 方法 | 路径 | 说明 | AI |
| GET | /progress/summary | 获取学习统计摘要 | 否 |
| GET | /progress/mastery | 获取知识点掌握度(雷达图数据) | 否 |
| GET | /progress/daily-stats | 获取每日学习统计(折线图数据) | 否 |
| GET | /progress/practice-records | 获取练习记录列表 | 否 |
| GET | /progress/weaknesses | 获取薄弱知识点列表 | 否 |
| GET | /progress/subject-distribution | 获取学科分布(饼图数据) | 否 |
| POST | /progress/analyze | AI 分析薄弱环节并生成建议 | ✅ |
| POST | /progress/assessment-report | AI 生成评估报告 | ✅ |
| GET | /progress/suggestions | 获取学习建议列表 | 否 |
| PUT | /progress/suggestions/:id/read | 标记建议已读 | 否 |
| GET | /progress/goals | 获取学习目标列表 | 否 |
| POST | /progress/goals | 创建学习目标 | 否 |
| PUT | /progress/goals/:id | 更新学习目标进度 | 否 |
学习路线模块 /api/learning-paths
| 方法 | 路径 | 说明 | AI |
| GET | /learning-paths | 获取学习路线列表 | 否 |
| GET | /learning-paths/:id | 获取路线详情(含节点) | 否 |
| POST | /learning-paths | 手动创建路线 | 否 |
| POST | /learning-paths/generate | AI 生成学习路线 | ✅ |
| POST | /learning-paths/:id/enroll | 报名加入路线 | 否 |
| PUT | /learning-paths/:id/progress | 更新学习进度 | 否 |
| GET | /learning-paths/my/enrolled | 获取我已报名的路线 | 否 |
| POST | /learning-paths/:id/nodes | 添加路线节点 | 否 |
文件上传模块 /api/upload
| 方法 | 路径 | 说明 |
| POST | /upload/pdf | 上传 PDF 并提取题目 |
| POST | /upload/image | 上传图片(OCR 识别题目) |
| POST | /upload/audio | 上传音频(语音转文字) |
| POST | /upload/text | 直接提交文本提取题目 |
| GET | /upload/history | 获取上传记录 |
分享模块 /api/sharing
| 方法 | 路径 | 说明 |
| POST | /sharing | 发送分享 |
| GET | /sharing/received | 获取收到的分享 |
| GET | /sharing/sent | 获取我发出的分享 |
| PUT | /sharing/:id/read | 标记分享已读 |
| GET | /sharing/unread-count | 获取未读分享数量 |
健康检查
GET /health — 无需认证,检查服务是否正常运行
// 响应示例
{
"status": "ok",
"timestamp": "2024-01-15T08:30:00.000Z",
"version": "1.0.0",
"service": "AI学生帮手后端"
}