3 pontos por kunggom 2023-01-11 | 1 comentários | Compartilhar no WhatsApp

Para quem precisa criar e manter aplicações relacionadas aos serviços em nuvem do Microsoft 365 oferecidos pela Microsoft, há algo praticamente impossível de evitar: a Microsoft Graph API. Para quem não conhece, trata-se de uma API RESTful que permite acessar de forma unificada todos os recursos em nuvem fornecidos pela Microsoft. A Microsoft também oferece o Graph SDK em algumas linguagens para facilitar o uso dessa API.

O problema é que sempre foi bastante complicado testar as partes que usam essa API. Isso ficou especialmente claro para mim nos casos em que a Graph API aplicava rate limit e retornava 429 Too Many Requests. Ao usar o Graph SDK, quando se recebe um código de resposta 429 por throttling, ele faz nova tentativa automaticamente com base no valor Retry-After do header de resposta. Mas, em alguns casos, era melhor falhar rapidamente sem tentar de novo, ou então aplicar uma política diferente da padrão. O problema é que não havia uma forma adequada de testar esse tipo de cenário no ambiente de desenvolvimento, então já aconteceu de eu perceber só depois do lançamento inicial do produto que precisava alterar a política de retry das requisições do Graph SDK em relação ao padrão, e corrigir isso em uma versão posterior.

A própria Microsoft também tinha certa noção desse problema e adicionou um recurso que simula respostas 429 ao incluir o parâmetro test429=true na URL da requisição da API, mas isso tinha a limitação de funcionar apenas em endpoints relacionados a SharePoint/OneDrive.
https://pnp.github.io/blog/post/…

Nesse contexto, finalmente surgiu no começo do ano uma ferramenta muito bem-vinda: o Microsoft Graph Developer Proxy.
É uma ferramenta capaz de simular vários valores de resposta retornados pela Graph API, além de reproduzir com facilidade diversos erros e throttling. De quebra, as requisições testadas não saem do ambiente local de desenvolvimento. Ainda está nos estágios iniciais de desenvolvimento, mas dizem que a versão oficial deve ser lançada ainda este ano. Para quem trabalha com isso, o surgimento de uma ferramenta assim é realmente muito conveniente.

1 comentários

 
kunggom 2023-01-11

Só como referência, mesmo antes de essa ferramenta surgir, não era como se não existisse absolutamente nenhuma forma de simular uma situação em que a Graph API retornasse 429. Havia maneiras de fazer isso usando ferramentas como o Fiddler. Mas era bem inconveniente.

Segundo o README, a ferramenta apresentada acima foi criada por Waldek Mastykarz em um hackathon no ano passado (2022), e, se você olhar um post antigo dele no blog (2018), verá que ele apresenta uma forma de simular uma situação em que a API do SharePoint retorna 429 usando o Fiddler.
https://blog.mastykarz.nl/simulating-throttling-sharepoint/