API 参考

题目接口

题目模块提供题目的增删改查、AI 生成、AI 解题、答案提交等功能,挂载于 /api/questions所有接口均需认证。

获取题目列表

GET /api/questions

获取公开题目及当前用户创建的题目,支持多条件筛选和分页。

Query 参数

参数类型说明
subjectstring按科目筛选(如:数学)
topicstring按知识点模糊搜索
difficultystringeasy / medium / hard
typestringmultiple_choice / fill_blank / short_answer / essay / calculation
searchstring标题和内容全文搜索
pagenumber页码,默认 1
limitnumber每页数量,默认 20

成功响应 200

{
  "success": true,
  "data": {
    "questions": [
      {
        "id": "uuid",
        "title": "一元二次方程求根",
        "content": "解方程:x² - 5x + 6 = 0",
        "subject": "数学",
        "grade": "高中一年级",
        "topic": "一元二次方程",
        "difficulty": "medium",
        "question_type": "calculation",
        "options": null,
        "correct_answer": "x=2 或 x=3",
        "explanation": "...",
        "tags": ["因式分解", "求根公式"],
        "is_public": 1,
        "creator_name": "张三",
        "created_at": "2024-01-15T08:00:00.000Z"
      }
    ],
    "total": 100,
    "page": 1,
    "limit": 20
  }
}

获取单道题目

GET /api/questions/:id

AI 生成题目

POST /api/questions/generate 🤖 AI · 限速 20次/分钟

调用 AI 生成符合指定条件的题目,并自动保存到题库。每次最多生成 10 道。

请求体

{
  "subject": "数学",            // 必填
  "topic": "二次函数",          // 必填
  "difficulty": "medium",       // 可选,默认 medium
  "questionType": "multiple_choice", // 可选,默认 multiple_choice
  "count": 3,                   // 可选,默认 1,最大 10
  "grade": "高中一年级"         // 可选
}

成功响应 200

{
  "success": true,
  "message": "成功生成3道题目",
  "data": {
    "ids": ["uuid1", "uuid2", "uuid3"],
    "questions": [
      {
        "title": "二次函数顶点坐标",
        "content": "二次函数 y=x²-4x+3 的顶点坐标是?",
        "options": ["A. (2,1)", "B. (2,-1)", "C. (-2,1)", "D. (-2,-1)"],
        "correct_answer": "B. (2,-1)",
        "explanation": "配方法:y=(x-2)²-1,顶点为(2,-1)...",
        "tags": ["顶点坐标", "配方法"]
      }
    ]
  }
}

提交答案

POST /api/questions/:id/submit 🤖 AI 批改

提交答案后,AI 实时批改,并自动更新知识点掌握度和每日统计。

请求体

{
  "answer": "B. (2,-1)",   // 学生答案
  "timeSpent": 45          // 可选,答题秒数
}

成功响应 200

{
  "success": true,
  "data": {
    "recordId": "uuid",
    "isCorrect": true,
    "score": 95,
    "feedback": "回答正确!你准确运用了配方法找到顶点...",
    "correctAnswer": "B. (2,-1)",
    "explanation": "配方法:y=(x-2)²-1,顶点为(2,-1)..."
  }
}

AI 解题

POST /api/questions/:id/solve 🤖 AI · 限速 20次/分钟

对指定题目调用 AI 生成详细解题过程,不需要请求体。

成功响应 200

{
  "success": true,
  "data": {
    "solution": "## 解题过程\n\n**方法一:配方法**\n\ny = x² - 4x + 3\n= (x² - 4x + 4) - 4 + 3\n= (x-2)² - 1\n\n因此顶点为 **(2, -1)**...",
    "keyPoints": ["配方法", "顶点式", "对称轴计算"]
  }
}

手动创建题目

POST /api/questions

请求体

{
  "title": "牛顿第二定律应用",   // 必填
  "content": "一个质量为2kg的物体...", // 必填
  "subject": "物理",             // 必填
  "correctAnswer": "F=4N",       // 必填
  "explanation": "根据F=ma...",  // 必填
  "grade": "高中一年级",         // 可选
  "topic": "牛顿定律",           // 可选
  "difficulty": "medium",        // 可选
  "questionType": "calculation", // 可选
  "options": null,               // 选择题时填写
  "tags": ["牛顿第二定律"],      // 可选
  "source": "人教版教材"         // 可选
}

从文本提取题目

POST /api/questions/extract 🤖 AI

请求体

{
  "text": "1. 下列说法正确的是...\nA. 选项1\nB. 选项2\n答案:A",
  "subject": "物理"
}

更新题目

PUT /api/questions/:id

只有题目的创建者可以修改。请求体字段与创建题目相同。

删除题目

DELETE /api/questions/:id

只有题目的创建者可以删除。

成功响应 200

{ "success": true, "message": "删除成功" }