Разбиение данных Microsoft Graph по страницам в приложении
Разбиение по страницам включает запрос или получение данных пакетами. Это метод повышения производительности, который имеет решающее значение для эффективной обработки больших наборов данных и помогает повысить производительность приложения и время отклика Microsoft Graph.
Некоторые запросы GET к Microsoft Graph возвращают несколько страниц данных из-за подкачки на стороне сервера или подкачки на стороне клиента. В этой статье мы рассмотрим, как работает разбиение по страницам в Microsoft Graph и как его можно использовать для оптимизации приложений.
Примечание.
Если вам нужны сведения о разбиении по страницам в пакетах SDK для Microsoft Graph, см. статью Страница по коллекции с помощью пакетов SDK Для Microsoft Graph.
Дополнительные сведения о разбиении на страницы см. в следующем видео.
Как работает разбиение на страницы
Разбиение по страницам на стороне сервера
При разбиении на страницы на стороне сервера служба Microsoft Graph возвращает количество результатов по умолчанию на одной странице без указания клиентом количества результатов, возвращаемых с помощью $top
. Например, GET /users
конечная точка возвращает значение по умолчанию 100 результатов на одной странице.
При наличии по крайней мере еще одной доступной страницы данных Microsoft Graph возвращает @odata.nextLink
свойство в ответе, содержащее URL-адрес следующей страницы результатов. Этот URL-адрес используется для запроса следующей страницы результатов. Microsoft Graph продолжит возвращать ссылку на следующую страницу результатов в @odata.nextLink
свойстве с каждым ответом, пока не будет больше страниц результатов для получения. Чтобы прочитать все результаты, необходимо продолжать вызывать Microsoft Graph со свойством @odata.nextLink
, возвращаемым в каждом ответе @odata.nextLink
, пока свойство не будет возвращено.
Разбиение по страницам на стороне клиента
При разбиении на страницы на стороне клиента клиентское приложение указывает количество результатов, которые microsoft Graph должен вернуть на одной странице с помощью параметров запроса $top, $skip или $skipToken . Поддержка разбиения на страницы на стороне клиента, включая количество результатов, которые клиент может запросить на одной странице, зависит от API и выполняемого запроса. Например, конечная /users
точка поддерживает , но не $skip
поддерживает $top
.
В оставшейся части этой статьи описано, как реализовать разбиение на страницы на стороне клиента.
Реализация подкачки на стороне клиента
В следующем примере показано разбиение на страницы на стороне клиента, где клиент использует $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, или Microsoft Graph может вернуть ошибку. - Не все ресурсы или связи поддерживают разбиение по страницам. Например, запросы к directoryRole не поддерживают разбиение по страницам. Сюда входит чтение самих объектов ролей и членов роли.
- При разбиении по страницам ресурсов каталога все настраиваемые заголовки запросов (заголовки, которые не являются заголовками авторизации или типа контента), такие как заголовок ConsistencyLevel , по умолчанию не включаются в последующие запросы страницы. Если эти заголовки требуется отправлять в последующие запросы, их необходимо явно настроить.
- При использовании
$count=true
строки запроса при запросе к ресурсам@odata.count
каталога свойство возвращается только на первой странице страничного результированного набора.
Связанные материалы
- Пакеты SDK для Microsoft Graph предоставляют классы и методы, помогающие с разбиением по страницам. Дополнительные сведения см. в разделе Страница через коллекцию с помощью пакетов SDK Для Microsoft Graph.