📚 完整API文档

🗂️ 目录

📚 课程管理API

GET/api/courses

获取所有课程列表及基本信息

响应示例:

{
  "courses": [
    {
      "code": "csc375",
      "path": "courses/csc375",
      "quizzes": ["quiz"],
      "assignments": ["assignment1"]
    }
  ],
  "total": 1
}

POST/api/courses

创建新课程(自动生成HTML和grader.py文件)

请求体:

{
  "course_code": "csc101",
  "course_name": "计算机科学导论",
  "instructor": "Dr. Lin",
  "instructor_email": "rongyu.lin@quinnipiac.edu",
  "quizzes": [
    {
      "id": "quiz1",
      "title": "第一次测验",
      "instructions": "请回答问题"
    }
  ],
  "assignments": [
    {
      "id": "assignment1",
      "title": "作业1",
      "description": "完成编程任务"
    }
  ]
}

响应示例:

{
  "success": true,
  "message": "课程 CSC101 创建成功",
  "course_code": "csc101"
}

GET/api/courses/{course_code}

获取单个课程的详细信息

响应示例:

{
  "code": "csc375",
  "path": "courses/csc375",
  "quizzes": {
    "quiz": {
      "id": "quiz",
      "submit_url": "/csc375/quizzes/quiz/submit",
      "has_grader": true,
      "has_html": true
    }
  },
  "assignments": {
    "assignment1": {
      "id": "assignment1",
      "submit_url": "/csc375/assignments/assignment1/submit",
      "has_grader": true,
      "has_html": true
    }
  }
}

DELETE/api/courses/{course_code}

删除指定课程(⚠️ 不可恢复)

响应示例:

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

📝 提交管理API

POST/api/courses/{course_code}/quizzes/{quiz_id}/submit

通过API提交Quiz(JSON格式)

请求体:

{
  "firstName": "John",
  "lastName": "Doe",
  "actualStudentId": "1234",
  "actualEmail": "john.doe@qu.edu",
  "quizAnswer": "我的答案内容",
  "submissionDate": "2025-01-20T10:30:00Z"
}

响应示例:

{
  "success": true,
  "submission_id": "quiz_1642678200_1234",
  "student_name": "John Doe",
  "total_points": 10,
  "earned_points": 0,
  "status": "submitted_for_review"
}

POST/api/courses/{course_code}/assignments/{assignment_id}/submit

通过API提交Assignment(JSON格式,支持文件)

请求体:

{
  "firstName": "John",
  "lastName": "Doe",
  "actualStudentId": "1234",
  "actualEmail": "john.doe@qu.edu",
  "teamSize": "Individual",
  "files": {
    "assignment_file": {
      "filename": "main.py",
      "content": "print('Hello World')"
    }
  }
}

响应示例:

{
  "success": true,
  "submission_id": "assignment_1642678200_1234",
  "student_name": "John Doe",
  "total_points": 100,
  "earned_points": 0,
  "status": "submitted_for_review"
}

GET/api/courses/{course_code}/submissions

获取课程的所有提交记录

响应示例:

{
  "course_code": "csc375",
  "submissions": [
    {
      "type": "quiz",
      "id": "quiz1",
      "student_id": "1234",
      "student_name": "John Doe",
      "submitted_at": "2025-01-20T10:30:00Z",
      "score": "8/10"
    }
  ],
  "total": 1,
  "message": "提交记录功能开发中"
}

🧪 API测试示例

常用测试命令

# 1. 获取所有课程
curl http://localhost:8080/api/courses

# 2. 获取特定课程详情
curl http://localhost:8080/api/courses/csc375

# 3. 创建新课程
curl -X POST http://localhost:8080/api/courses \
  -H "Content-Type: application/json" \
  -d '{
    "course_code": "test101",
    "course_name": "测试课程",
    "quizzes": [{"id": "quiz1", "title": "测试Quiz"}],
    "assignments": [{"id": "assignment1", "title": "测试作业"}]
  }'

# 4. 通过API提交Quiz
curl -X POST http://localhost:8080/api/courses/csc375/quizzes/quiz/submit \
  -H "Content-Type: application/json" \
  -d '{
    "firstName": "Test",
    "lastName": "Student",
    "actualStudentId": "1234",
    "actualEmail": "test@qu.edu",
    "quizAnswer": "这是我的测试答案"
  }'

# 5. 获取提交记录
curl http://localhost:8080/api/courses/csc375/submissions

# 6. 删除课程(谨慎使用!)
curl -X DELETE http://localhost:8080/api/courses/test101

🌐 网页访问URL

← 返回管理后台