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

Concluído

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

Recuperar dados páginados usando o Microsoft Graph

Quando você chama uma API de Microsoft Graph que retorna uma coleção de dados, como a API de mensagens que você usou anteriormente, você recebe um subconjunto dos dados armazenados Microsoft 365. Para verificar se há mais dados para o aplicativo recuperar, verifique se a resposta contém a propriedade @odata.nextLink.

var emails = graphClient
  .api('/me/messages')
  .select('subject,receivedDateTime')
  .orderby('receivedDateTime desc')
  .top(10)
  .get();

if (emails['@odata.nextLink']) {
  // more data available
}

A @odata.nextLink contém uma URL completa que você pode chamar para recuperar a segunda página de resultados. Essa URL preserva todas as configurações da solicitação inicial, como quais propriedades recuperar, como classificar os dados e quantos itens obter.

Para carregar o próximo lote de dados, passe a URL retornada no @odata.nextLink para o graphClient:

var emails = graphClient
  .api('/me/messages')
  .select('subject,receivedDateTime')
  .orderby('receivedDateTime desc')
  .top(10)
  .get();

if (emails['@odata.nextLink']) {
  var moreEmails = graphClient
    .api(emails['@odata.nextLink'])
    .get();
}

Depois de recuperar a segunda página de resultados, você pode ver se há mais dados disponíveis verificando se os resultados têm a propriedade @odata.nextLink definida.

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ê sempre deve usar o valor @odata.nextLink para carregar mais dados.

Próximas etapas

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