Используя функциональность подкачки MS Graph C # SDK, могу ли я захватить следующую ссылку и возобновить вызов с ее помощью позже?

#c# #microsoft-graph-api #microsoft-graph-sdks

#c# #microsoft-graph-api #microsoft-graph-sdks

Вопрос:

Я понимаю, что, основываясь на приведенной здесь документации, с помощью библиотеки C # Graph SDK я могу продолжать запрашивать следующую страницу результатов до тех пор, пока NextPageRequest == null, но мне было интересно, могу ли я сохранить следующую ссылку, которую я получу, и если я столкнусь с ошибкой, при следующем выполнении я мог бывозобновите работу с того места, где я был, используя nextLink (используя библиотеку C # SDK).

Я не смог найти ничего в документации по этому поводу. Возможно, это то, что я мог бы сделать с RequestBuilder?

Комментарии:

1. Другим способом использования этого было бы поддерживать инициируемую пользователем подкачку в виде ссылок на следующую страницу. AWS Cognito предоставляет NextToken для этого простой в использовании.

Ответ №1:

Я понял это, или, по крайней мере, способ, который работает с использованием skipToken (возможно, есть более удобный встроенный способ библиотечной функции для этого).

Пример запроса:

 var groupMembersPaged = await graphClient.Groups[groupId]
    .Members
    .Request()
    .Top(5)
    .GetAsync();
 
  1. Извлеките skipToken из результата следующим образом:
 var skipToken = groupMembersPaged.NextPageRequest.QueryOptions
    .Where(qo => qo.Name == "$skiptoken")
    .FirstOrDefault();
 
  1. Если skipToken существует, используйте его в следующем запросе:
 if (skipToken != null)
{
    var queryOptions = new List<QueryOption>
    {
        new QueryOption("$skiptoken", skipToken.Value)
    };

    var groupMembersPagedSkip = await graphClient.Groups[groupId]
        .Members
        .Request(queryOptions)
        .GetAsync();
}