Appearance
开始答题
POST
/api/app/course/{courseId}/task/{taskId}/marker/{markerId}/start
开始弹题答题。当前轮已完成时再次调用会新开一轮;当前轮未完成时复用同一轮。
位置参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| courseId | number | 是 | 课程 ID |
| taskId | number | 是 | 任务 ID |
| markerId | number | 是 | 弹题 ID |
响应
| 字段 | 类型 | 说明 |
|---|---|---|
| id | number | 弹题 ID |
| second | number | 弹题触发秒数 |
| resumeQuizId | number / null | 当前轮按 seq 首个未完成题目的 ID;全部完成时为 null |
| resumeQuizRemainingTime | number / null | resumeQuizId 对应题目的剩余作答时间(秒);无待答题时为 null |
| clientUuid | string | 当前答题窗口租约;后续 finish 必须回传 |
| quizzes | array | 题目列表,按 seq 升序 |
| quizzes[].id | number | 题目 ID |
| quizzes[].type | string | 题型:single_choice / choice / uncertain_choice / determine / fill |
| quizzes[].stem | string | 题干(展示用 HTML);填空题为去除了填空内容后的 [[]] 占位符 |
| quizzes[].options | array / null | 选项;非选择题为 null,格式为 [{key, label}] |
| quizzes[].questionTimeLimit | number | 单题限时(秒) |
| quizzes[].score | number | 单题满分 |
| quizzes[].isFinished | boolean | 当前轮该题是否已完成 |
响应示例
json
{
"id": 201,
"second": 126,
"resumeQuizId": 501,
"resumeQuizRemainingTime": 18,
"clientUuid": "4bcaad66-f327-4f57-94c4-12f9a8bdbef7",
"quizzes": [
{
"id": 501,
"type": "single_choice",
"stem": "<p>题干</p>",
"options": [
{ "key": "A", "label": "选项 A" },
{ "key": "B", "label": "选项 B" }
],
"questionTimeLimit": 20,
"score": 1000,
"isFinished": false
}
]
}异常
| 错误码 | HTTP | 说明 |
|---|---|---|
COURSE_VIDEO_MARKER_TASK_MISMATCH | 400 | 任务与弹题不匹配 |
COURSE_VIDEO_MARKER_NOT_FOUND | 404 | 弹题不存在 |