Compartilhar via


Paginação de dados do Microsoft Graph em seu aplicativo

Algumas consultas GET no Microsoft Graph devolvem múltiplas páginas de dados devido à paginação do lado do servidor ou à paginação do lado do cliente. A paginação de dados ajuda a melhorar o desempenho da sua aplicação e o tempo de resposta do Microsoft Graph.

Observação

Se estiver à procura de informações sobre paginação nos SDKs do Microsoft Graph, consulte Page through a collection using the Microsoft Graph SDKs (Página através de uma coleção com os SDKs do Microsoft Graph).

Saiba mais sobre a paginação através do seguinte vídeo.

Como funciona a paginação

Na paginação do lado do cliente, uma aplicação cliente especifica o número de resultados que pretende que o Microsoft Graph devolva numa única página com os parâmetros de consulta $top, $skip ou $skipToken . O suporte para paginação do lado do cliente, incluindo o número de resultados que o cliente pode pedir numa única página, depende da API e da consulta que está a ser executada. Por exemplo, o /users ponto final suporta $top , mas não $skip.

Na paginação do lado do servidor, o serviço Microsoft Graph devolve um número predefinido de resultados numa única página sem que o cliente especifique o número de resultados a devolver com $top. Por exemplo, o GET /users ponto final devolve uma predefinição de 100 resultados numa única página.

Quando é necessário mais do que um pedido de consulta para obter todos os resultados, o Microsoft Graph devolve uma @odata.nextLink propriedade na resposta que contém um URL para a página seguinte dos resultados. Você pode recuperar a próxima página de resultados enviando o valor de URL da propriedade @odata.nextLink para o Microsoft Graph. O Microsoft Graph continuará a devolver uma referência à próxima página de resultados na @odata.nextLink propriedade com cada resposta até que não existam mais páginas de resultados a obter. Para ler todos os resultados, tem de continuar a chamar o Microsoft Graph com a @odata.nextLink propriedade devolvida em cada resposta até que a @odata.nextLink propriedade deixe de ser devolvida.

Por exemplo, o exemplo seguinte mostra a paginação do lado do cliente onde o cliente utiliza o $top parâmetro de consulta para pedir até cinco utilizadores no inquilino.

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

Se o resultado contiver mais resultados, o Microsoft Graph devolve uma @odata.nextLink propriedade semelhante à seguinte, juntamente com a primeira página de resultados:

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

Utilize o URL completo na @odata.nextLink propriedade num pedido GET para obter a página seguinte dos resultados. Consoante a API em que a consulta está a ser executada, o valor do @odata.nextLink URL contém um $skiptoken parâmetro de consulta ou .$skip A URL também contém todos os outros parâmetros de consulta presentes na solicitação original. Não tente extrair o valor ou $skip e utilize-o $skiptoken num pedido diferente.

O comportamento de paginação varia entre diferentes APIs do Microsoft Graph. Ao trabalhar com dados paginados, considere o seguinte:

  • Uma página de resultados pode conter zero ou mais resultados.
  • APIs diferentes podem ter tamanhos padrão e máximo de página diferentes.
  • APIs diferentes poderão se comportar de maneira diferente se você especificar um tamanho de página (por meio do parâmetro de consulta $top) que exceda o tamanho máximo de página para essa API. Dependendo da API, o tamanho de página solicitado pode ser ignorado, ele pode usar por padrão o tamanho máximo de página para essa API ou o Microsoft Graph pode retornar um erro.
  • Nem todos os recursos ou relações suportam paginação. Por exemplo, as consultas no diretórioRole não suportam paginação. Isto inclui a leitura de objetos de função e membros da função.
  • Ao paginar os recursos de diretório, os cabeçalhos de pedido personalizados (cabeçalhos que não sejam cabeçalhos de Autorização ou Tipo de Conteúdo), como o cabeçalho ConsistencyLevel , não são incluídos por predefinição nos pedidos de página subsequentes. Se esses cabeçalhos precisam ser enviados em solicitações subsequentes, você deve defini-los explicitamente.
  • Ao utilizar a $count=true cadeia de consulta ao consultar recursos de diretório, a @odata.count propriedade é devolvida apenas na primeira página do conjunto de resultados paginado.