Requisições em lote utilizando Graph

Olá tudo bom com vocês?

Quantas vezes nós estamos fazendo algum desenvolvimento e precisamos consultar diversas fontes de conteúdo para gerar algum resultado? Estes dados podem inclusive ter alguma dependência. E assim como fazemos? Primeiro uma requisição para obter um tipo de dado, e depois outra requisição, e outra…e outra……..E assim demoramos a obter o resultado. Caso estes dados estejam disponíveis no Office 365, podemos usar o Microsoft Graph para fazer várias consultas em apenas uma requisição.

OBS.: Já escrevi sobre requisições em lote no SharePoint OnLine. Para ler o texto basta acessar o post: https://pmneto.com/requisicoes-em-lote-batch-no-sharepoint-online-parte-1/

Mãos a obra!

Para fazer a demostração estou utilizando o Graph Explorer. Ele é uma plataforma da Microsoft onde é possível brincar um pouco com os recursos do Graph. Inclusive é possível logar com a sua conta Microsoft e fazer consultas às suas informações.

Para fazer a consultas em lote utilizando o Graph precisamos usar o endpoint https://graph.microsoft.com/v1.0/$batch. Este endpoint aceita apenas requisições do tipo POST. Outro ponto interessante é que precisamos informar quais são as consultas/ações que devem ser feitas nesta requisição. Para isso é necessário informar um JSON com a seguinte estrutura:

Explicando o JSON:

  • Linha 2: Criamos um array com o nome de requests.
  • Linha 3: Criamos o objeto que irá conter a requisição.
  • Linha 4: Informamos qual o ID da ação a ser executada;
  • Linha 5: Qual verbo deve ser utilizado.
  • Linha 6: Qual a url que deverá ser executada.

Neste exemplo estamos consultando meus calendários e minhas mensagens de e-mail.

Testando:

Acesse o Graph Explorer no link https://developer.microsoft.com/en-us/graph/graph-explorer.

Na barra de endereço existente altere a requisição para POST e informe a url https://graph.microsoft.com/v1.0/$batch.

Em Request Body informe o JSON utilizado acima:

Agora basta clicar em Run Query e ver o resultado:

O resultado será um JSON com o identificador de cada uma das requisições e o resultado da requisição:

Detalhes da resposta:

  • Linha 2: Array responses, que possui o resultado das nossas requisições.
  • Linha 3: O Objeto correspondente a requisição.
  • Linha 4: o Identificador da requisição. É o mesmo identificador utilizado para fazer a requisição.
  • Linha 5: Código de status da requisição.
  • Linha 6: O header recebido da requisição.
  • Linha 7: O resultado da requsição. Nesta propriedade que estará o resultado da requisição feita. No nosso exemplo estará a lista dos meus calendários:

Interessante não? O legal que podemos usar isso, por exemplo, no SharePoint Framework. Abaixo um código que fiz para brincar um pouco com estes requests:

Bom pessoal por hoje é só! Qualquer dúvida podem me procurar que, assim que possível, tentarei responder.

Referências: