1

startDate今日の日付より前で、今日の日付より後のユーザーのすべてのコースを見つける必要がありendDateます。APIを使用しています

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

ある特定のケースでは、1 人のユーザーに対して 18,000 を超えるコースがあります。このサービスは一度に 18,000 レコードを返すことはできません。一度に 100 レコードしか取得できないため、ブックマーク フィールドを使用して 100 レコードのセットでデータをフェッチする必要があります。Bookmark は、フェッチした最後の 100 番目のレコードの courseId であり、次の 100 レコードのセットを取得します。

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

ループを 180 回繰り返す必要があり、結果は"Request time out" error. startDateおよびに基づいてレコードをフィルタリングする必要があります。またはendDateに基づいてデータをソートできるソート基準は言及されていません。これらのデータを並べ替える方法を見つけたり、そのような種類の並べ替えを実行できる他の A​​PI を教えたりするのを手伝ってくれる人はいますか?startDateendDate

注: 18,000 件のレコードすべてにプロパティがあります。"IsActive":true

4

1 に答える 1

0

ユーザーごとに組織単位のリストに到達するのではなく、組織単位のリストによってユーザーに到達することを試みることができます。/d2l/api/lp/{ver}/orgstructure/{orgUnitId}/descendants/?ouTypeId={courseOfferingType}を使用して、ユーザーの登録で知られている最上位の共通祖先から派生したコース オファリング ID のリスト全体を取得することができます。その後、ループし/d2l/api/lp/{ver}/courses/{orgUnitId}てそれらの組織単位ごとにコース提供情報を取得し、日付に基づいて重要でないすべてのコース提供を事前にフィルタリングして切り取ることができます。次に、残ったものについて、それらのそれぞれでユーザーの登録を確認して、ユーザーが一致する小さなセットを特定できます。

これにより、サービスへの呼び出しが減少するのではなく、確実に増加するため、私が確認できる利点は 2 つだけです。

  • 必要なコース オファリングの開始セット全体をページに戻すのではなく、すぐに取得できるはずです (ただし、この呼び出しが将来ページング呼び出しに変わり、「すべての組織をフェッチする」可能性は十分にあります)。一度にユニット」の性質は現在廃止されています)。

  • 複数のユーザーに対してこのユース ケース全体を実行する必要がある場合は、組織構造データを 1 回フェッチしてキャッシュし、データのサブセットに対してユーザーのクエリのみを実行できます。

それまでの間、より良いフィルタリング (アクティブ/非アクティブ、開始日、終了日など) を提供するために、登録呼び出しの機能強化を要求することは完全に合理的だと思います。ページング (つまり、各ページ フレーム内の応答の数) をクライアントに制御するための要求。

于 2012-09-07T12:55:56.733 に答える