跳转至

应用程序编程接口

ZJUI-Learn 包含供教师使用的有限 API,允许以编程方式访问评估、评估实例和提交。

API认证

ZJUI-Learn 使用 API 的个人访问令牌。要生成个人访问令牌,请在导航栏中单击您的姓名,然后单击“设置”。在标题为“个人访问令牌”的部分下,您可以为自己生成令牌。这些令牌为您提供普通用户帐户拥有的所有权限。

通过 Private-Token 标头提供您的令牌:

curl -H "Private-Token: TOKEN" https://us.prairielearn.com/pl/api/v1/<REST_OF_PATH>

端点 HTTP 方法

API端点需要GET请求POST请求GET 请求从 ZJUI-Learn 检索信息,例如成绩册信息。 POST 请求要求 ZJUI-Learn 执行操作,例如同步课程 GitHub 存储库。对于 GET 请求,您可以遵循上例中的格式。

以下是使用 curl 进行 POST 请求的示例:

curl -H "Private-Token: TOKEN" -X POST https://us.prairielearn.com/pl/api/v1/<REST_OF_PATH>

访问脚本示例

下载课程实例的所有 API 数据的示例脚本位于 api_download.py。你可以这样使用它:

python api_download.py --token 9a6932a1-e356-4ddc-ad82-4cf30ad896ac --course-instance-id 29832 --output-dir tam212fa18

token 是您上述的个人访问令牌。可以通过导航到 ZJUI-Learn Web 界面中的课程实例并从 URL 中提取 ID 来获取 course-instance-id

端点

所有 API 端点均位于 /pl/api/v1/。如果您在生产 ZJUI-Learn 上运行,则意味着 API 位于 https://us.prairielearn.com/pl/api/v1。如果您在端口 3000 本地运行它,则可以通过 http://localhost:3000/pl/api/v1/ 访问该 API。

在下面的端点列表中,以冒号开头的路径组件(如 :course_instance_id)应替换为整数 ID。

课程实例

获取单个课程实例

GET /pl/api/v1/course_instances/:course_instance_id

获取课程实例的成绩册

GET /pl/api/v1/course_instances/:course_instance_id/gradebook

获取课程实例的访问规则

GET /pl/api/v1/course_instances/:course_instance_id/course_instance_access_rules

列出课程实例的评估

GET /pl/api/v1/course_instances/:course_instance_id/assessments

评估

获得单一评估

GET /pl/api/v1/course_instances/:course_instance_id/assessments/:assessment_id

列出评估的访问规则

GET /pl/api/v1/course_instances/:course_instance_id/assessments/:assessment_id/assessment_access_rules

列出评估实例进行评估

GET /pl/api/v1/course_instances/:course_instance_id/assessments/:assessment_id/assessment_instances

评估实例

获取单个评估实例

GET /pl/api/v1/course_instances/:course_instance_id/assessment_instances/:assessment_instance_id

列出评估实例的实例问题

GET /pl/api/v1/course_instances/:course_instance_id/assessment_instances/:assessment_instance_id/instance_questions

列出评估实例的提交内容

GET /pl/api/v1/course_instances/:course_instance_id/assessment_instances/:assessment_instance_id/submissions

获取评估实例的事件日志

GET /pl/api/v1/course_instances/:course_instance_id/assessment_instances/:assessment_instance_id/log

意见书

获取单个提交

GET /pl/api/v1/course_instances/:course_instance_id/submissions/:submission_id

课程同步

开始课程同步

POST /pl/api/v1/course/:course_id/sync

返回 job_sequence_id,可用于检查同步作业的状态。

检查课程同步状态

GET /pl/api/v1/course/:course_id/sync/:job_sequence_id

返回同步作业的状态和输出。