Our organization has written a number of B2s which integrate with Blackboard via the Java APIs. Now we're working on a rewrite of an old product, switching from a B2 to an LTI, using the REST APIs. Most of our products are tools for teachers, so frequently we'll pull all the Course Memberships for a course, then all the users, etc. From what I can tell, the Bb REST API doesn't support batching (asking for multiple users at the same time) or embedding (where a user object appears inside the Course Membership object).
We're making a large number of REST API calls to load one course, especially if that course has 500+ Course Memberships:
- We make a call for the Course Memberships
- For each Course Membership we make a call for the user
- Then we'll make other calls for user specific data (grades, etc), one (or more) calls for each Course Membership.
Beyond batching or embedding, are there other ways that we can improve performance?
Thanks!
Your analysis is correct, Jeff. My suggestion would be to cache or store the user data, so when you get memberships, you can just pull in new users and drop users that are no longer enrolled. Still, with your enrollment numbers, there will be a large number of calls, but caching should help a lot.