Canvas LMS API 中缺少注册条款

Missing enrollment terms in Canvas LMS API

我目前正在使用 Canvas LMS REST API 进行一些工作,并且在尝试检索系统中定义的所有注册条款列表时遇到了 运行 问题。在在线系统中查看术语时,我可以看到所有已创建的术语,从第一个到最远定义的学期。但是,当我尝试使用

获取术语列表时

获取/api/v1/accounts/:account_id/terms

我只收到 10 个术语的列表,其余的都没有。有谁知道是什么原因造成的?

此外,Term 和 EnrollmentTerm 对象之间有区别吗?我只看到 API 对 EnrollmentTerm 对象的调用,而 Term 似乎是 EnrollmentTerm 中包含的数据的子集,只能在课程中传递。有人可以解释一下这里是否存在重要差异,以及我可能遗漏了什么吗?

最后,谁能告诉我一些关于 API 调用返回的错误代码的信息?例如,当我使用

POST /api/v1/accounts/:account_id/terms

使用一些关联参数,我收到 400 错误请求响应。当参数命名不正确时,我会收到 500 响应。关于此事的任何指导都会非常有帮助。

如果我能做些什么来帮助澄清事情,请告诉我。感谢您的帮助!

我联系了 Canvas 开发人员,发现这是由他们对 API 响应进行分页的方式造成的。他们的默认上限似乎是每个响应 10 个,但是可以通过在查询末尾添加 ?per_page=100 将其扩展到 100 个,如下所示:

POST /api/v1/accounts/:account_id/terms?per_page=100

可以使用在响应的 Link header 中 returned 的 URL 检索其他页面。有关更多信息,请参见 here.

一个例子 Link header 是:

<https://<canvas>/api/v1/accounts/:account_id/terms?page=1&per_page=10>; rel="current",
<https://<canvas>/api/v1/accounts/:account_id/terms?page=2&per_page=10>; rel="next",
<https://<canvas>/api/v1/accounts/:account_id/terms?page=1&per_page=10>; rel="first",
<https://<canvas>/api/v1/accounts/:account_id/terms?page=10&per_page=10>; rel="last"

Link header 中的 URL 仅在相关时才包含在内,因此第一页不会 return "prev" link 和最后一页不会return一个"next"link,例如