Поделиться через


Разбиение данных Microsoft Graph по страницам в приложении

Некоторые запросы GET к Microsoft Graph возвращают несколько страниц данных из-за подкачки на стороне сервера или подкачки на стороне клиента. Данные подкачки помогают повысить производительность приложения и время отклика Microsoft Graph.

Примечание.

Если вам нужны сведения о разбиении по страницам в пакетах SDK для Microsoft Graph, см. статью Страница по коллекции с помощью пакетов SDK Для Microsoft Graph.

Дополнительные сведения о разбиении на страницы см. в следующем видео.

Как работает разбиение на страницы

При разбиении на страницы на стороне клиента клиентское приложение указывает количество результатов, которые microsoft Graph должен вернуть на одной странице с помощью параметров запроса $top, $skip или $skipToken . Поддержка разбиения на страницы на стороне клиента, включая количество результатов, которые клиент может запросить на одной странице, зависит от API и выполняемого запроса. Например, конечная /users точка поддерживает , но не $skipподдерживает $top .

При разбиении на страницы на стороне сервера служба Microsoft Graph возвращает количество результатов по умолчанию на одной странице без указания клиентом количества результатов, возвращаемых с помощью $top. Например, GET /users конечная точка возвращает значение по умолчанию 100 результатов на одной странице.

Если для получения всех результатов требуется несколько запросов, Microsoft Graph возвращает @odata.nextLink свойство в ответе, содержащее URL-адрес следующей страницы результатов. Следующую страницу результатов можно получить, отправив значение URL-адреса свойства @odata.nextLink в Microsoft Graph. Microsoft Graph продолжит возвращать ссылку на следующую страницу результатов в @odata.nextLink свойстве с каждым ответом, пока не будет больше страниц результатов для получения. Чтобы прочитать все результаты, необходимо продолжать вызывать Microsoft Graph со свойством @odata.nextLink , возвращаемым в каждом ответе @odata.nextLink , пока свойство не будет возвращено.

Например, в следующем примере показано разбиение на страницы на стороне клиента, где клиент использует $top параметр запроса для запроса до пяти пользователей в клиенте.

GET https://graph.microsoft.com/v1.0/users?$top=5

Если результат содержит больше результатов, Microsoft Graph возвращает @odata.nextLink свойство, аналогичное следующему, а также первую страницу результатов:

"@odata.nextLink": "https://graph.microsoft.com/v1.0/users?$top=5&$skiptoken=RFNwdAIAAQAAAD8...AAAAAAAA"

Используйте весь URL-адрес в свойстве @odata.nextLink в запросе GET, чтобы получить следующую страницу результатов. В зависимости от API, к которому выполняется запрос, @odata.nextLink значение URL-адреса содержит $skiptoken параметр запроса или $skip . URL-адрес также содержит все остальные параметры, имеющиеся в исходном запросе. Не пытайтесь извлечь $skiptoken значение или $skip используйте его в другом запросе.

Для различных API Microsoft Graph характерны свои особенности разбиения по страницам. При работе со страницами данных необходимо учитывать следующее:

  • Страница результатов может содержать ноль или более результатов.
  • Разные API могут иметь различные максимальные размеры страницы и размеры страницы по умолчанию.
  • Различные API могут работать по-разному, если указанный (с помощью параметра запроса $top) размер страницы превышает максимальное значение для соответствующего API. В зависимости от API запрошенный размер страницы может быть проигнорирован, может быть возвращен максимальный размер страницы для соответствующего API или же Microsoft Graph может вернуть ошибку.
  • Не все ресурсы или связи поддерживают разбиение по страницам. Например, запросы к directoryRole не поддерживают разбиение по страницам. Сюда входит чтение самих объектов ролей и членов роли.
  • При разбиении по страницам ресурсов каталога все настраиваемые заголовки запросов (заголовки, которые не являются заголовками авторизации или типа контента), такие как заголовок ConsistencyLevel , по умолчанию не включаются в последующие запросы страницы. Если эти заголовки требуется отправлять в последующие запросы, их необходимо явно настроить.
  • При использовании $count=true строки запроса при запросе к ресурсам@odata.count каталога свойство возвращается только на первой странице страничного результированного набора.