Carregar os e-mails de um usuário em lotes

Concluído

Você criou um aplicativo ASP.NET Core, conectou-o ao Microsoft 365 e exibiu os últimos 10 emails do usuário usando o Microsoft Graph. Agora, vamos estender o aplicativo para que os usuários possam carregar seus emails em lotes de 10.

Recuperar dados paginados usando o Microsoft Graph

Ao chamar uma API do Microsoft Graph que retorna uma coleção de dados, você receberá um subconjunto dos dados armazenados no Microsoft 365. Para verificar se há mais dados para o aplicativo recuperar, verifique se a resposta contém um valor de solicitação da próxima página. Esse valor pode ser acessado usando a propriedade NextPageRequest do objeto de resposta, conforme mostrado no método GetNextLink():

private string GetNextLink(IUserMessagesCollectionPage pagedMessages) {
  if (pagedMessages.NextPageRequest != null)
  {
    // Get the URL for the next batch of records
    return pagedMessages.NextPageRequest.GetHttpRequestMessage().RequestUri?.OriginalString;
  }
  return null;
}

A chamada para pagedMessages.NextPageRequest.GetHttpRequestMessage() retorna uma URL completa que você pode chamar para recuperar a próxima página de resultados. Todos os dados de configuração da solicitação inicial são preservados, incluindo propriedades a serem recuperadas, como classificar os dados e quantos itens obter.

Para carregar o próximo lote de dados, passe a URL retornada do método GetNextLink() junto com a instância GraphServiceClient para o objeto UserMessagesCollectionRequest:

// Use the next page request URI value to get the page of messages
var messagesCollectionRequest = new UserMessagesCollectionRequest(nextPageLink, _graphServiceClient, null);
pagedMessages = await messagesCollectionRequest.GetAsync();

Depois de recuperar a segunda página de resultados, você poderá ver se há mais dados disponíveis chamando o método GetNextLink().

Cuidado

Microsoft Graph segue o padrão OData 4. Uma parte do padrão é a capacidade de usar a combinação de parâmetros $top e $skip (os métodos Top e Skip no SDK do Microsoft Graph) para recuperar uma página específica de dados. Isso não é possível ao trabalhar com emails porque uma pasta de email pode conter dados diferentes de email que possam afetar a paginação. É por isso que ao trabalhar com emails, você deve sempre usar a técnica mostrada anteriormente para carregar mais dados.

Próximas etapas

Vamos estender o aplicativo para que ele permita que os usuários carreguem mais emails em lotes.