2

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

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

我只收到了 10 个术语的列表,而其余的则丢失了。有谁知道这可能是什么原因造成的?

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

最后,谁能指出一些有关从 API 调用返回的错误代码的信息?例如,当我使用

发布 /api/v1/accounts/:account_id/terms

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

让我知道是否有什么我可以做的来帮助澄清事情。谢谢你的帮助!

4

1 回答 1

2

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

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

可以使用响应的 Link 标头中返回的 URL 检索其他页面。更多信息可以在这里找到。

一个示例链接头将是:

<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 标头中的 URL 仅在相关时才包含在内,因此第一页不会返回“上一个”链接,最后一页不会返回“下一个”链接。

于 2015-12-22T21:03:16.863 回答