如何在Desire2Learn Valence API中获取用户的当前课程?当课程数千时,我们可以做什么?

时间:2012-09-07 07:15:51

标签: desire2learn

我们需要为startDate小于今天的日期且endDate大于今天的日期的用户查找所有课程。我们正在使用API​​

/d2l/api/lp/{ver}/enrollments/myenrollments/?orgUnitTypeId=3

在一个特定情况下,我对一个用户有超过18,000个课程。该服务一次不能返回18000条记录,我一次只能获得100条记录,因此我需要使用书签字段来获取100条记录的数据。书签是我们获取的最后100条记录的courseId,以获得下一组100条记录。

/d2l/api/lp/{ver}/enrollments/myenrollments/?orgUnitTypeId=3&bookmark=12528

我需要重复循环180次,这会产生"Request time out" error。 我需要根据startDateendDate过滤记录,没有提到可以根据startDateendDate对数据进行排序的排序条件。任何人都可以帮我找出排序这些数据的方法,或者告诉任何其他可以进行此类排序的API吗?

注意:所有18,000条记录都有属性"IsActive":true

1 个答案:

答案 0 :(得分:0)

您可以尝试通过组织单位列表访问用户,而不是按用户访问组织单位列表。您可以尝试使用/d2l/api/lp/{ver}/orgstructure/{orgUnitId}/descendants/?ouTypeId={courseOfferingType}来检索从用户注册已知的最高共同祖先下来的课程提供ID的完整列表。然后,您可以循环浏览/d2l/api/lp/{ver}/courses/{orgUnitId}以获取每个组织单位的课程提供信息,以预先过滤并删除您根据日期不关心的所有课程。然后,对于剩下的那些,您可以检查用户在每个用户中的注册情况,以确定用户匹配哪个较小的集合。

这肯定会导致更多对服务的调用,而不是更少,所以它只有两个我能看到的优点:

  • 将来会变成一个寻呼呼叫,并且"一次性获取所有组织单位"当前它已被弃用的性质。)

  • 如果您需要为多个用户执行此整个用例,您可以获取组织结构数据一次,缓存它,然后只对用户进行查询数据的子集。

与此同时,我认为要求对注册调用进行增强以提供更好的过滤(主动/非主动,开始日期,结束日期等)是完全合理的:我怀疑这样做请求可能看到比通过分页向客户端提供控制的请求更多的牵引力(即每个页面帧中的响应数量)。