Как получить текущие курсы для пользователя в Desire2Learn Valence API? Что мы можем сделать, чтобы получить, когда курсы исчисляются тысячами?

Нам нужно найти все курсы для пользователя, у которого startDate меньше сегодняшней даты, а endDate больше сегодняшней даты. Мы используем API

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

В одном конкретном случае у меня более 18 тысяч курсов против одного пользователя. Служба не может вернуть 18 тысяч записей за один раз, я могу получить только 100 записей за раз, поэтому мне нужно использовать поля закладок для получения данных в наборе из 100 записей. Закладка — это идентификатор курса последней 100-й записи, которую мы извлекли, чтобы получить следующий набор из 100 записей.

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

Мне нужно повторить цикл 180 раз, в результате получится "Request time out" error. Мне нужно отфильтровать запись на основе startDate и endDate, не упоминаются критерии сортировки, которые могут сортировать данные на основе startDate или endDate. Может ли кто-нибудь помочь мне найти способ сортировки этих данных или сообщить какой-либо другой API, который может выполнять такой тип сортировки?

Примечание. Все 18 тысяч записей имеют свойство "IsActive":true.


person ekta mullick    schedule 07.09.2012    source источник


Ответы (1)


Вместо того, чтобы переходить к списку организационных единиц по пользователю, вы можете попробовать добраться до пользователя по списку организационных единиц. Вы можете попробовать использовать /d2l/api/lp/{ver}/orgstructure/{orgUnitId}/descendants/?ouTypeId={courseOfferingType} для получения всего списка идентификаторов предложений курсов, происходящих от самого старшего общего предка, известного для регистраций пользователя. Затем вы можете циклически пройти /d2l/api/lp/{ver}/courses/{orgUnitId}, чтобы получить информацию о курсах для каждого из этих организационных подразделений, чтобы предварительно отфильтровать и вырезать все предложения курсов, которые вам не нужны, на основе дат. Затем для тех, кто остался, вы можете проверить регистрацию пользователя в каждом из них, чтобы выяснить, с каким из вашего меньшего набора совпадает пользователь.

Это, безусловно, приведет к большему обращению к службе, а не к меньшему, поэтому я вижу только два преимущества:

  • Вы должны иметь возможность получить весь начальный набор курсов, которые вам нужны, сразу, а не возвращать их обратно на страницы (хотя вполне возможно, что в будущем этот звонок превратится в пейджинговый). и характер «выборки всех организационных единиц одновременно», который в настоящее время устарел).

  • Если вам нужно выполнить весь этот вариант использования для более чем одного пользователя, вы можете получить данные организационной структуры один раз, кэшировать их, а затем выполнять запросы только для пользователей в подмножестве данных.

В то же время я думаю, что совершенно разумно запросить усовершенствование вызовов для регистрации, чтобы обеспечить лучшую фильтрацию (активные/неактивные, даты начала, даты окончания и т. д.): я подозреваю, что такой запрос может получить больше поддержки, чем запрос на предоставление клиентам контроля над пейджингом (т. е. количество ответов в каждом кадре страницы).

person Viktor Haag    schedule 07.09.2012