Inspecionar solicitações de API emitidas por serviços de nuvem
Quando você integra seu aplicativo com serviços de nuvem, um dos desafios que você pode enfrentar é entender como o serviço de nuvem interage com as APIs que usa. Ser capaz de inspecionar solicitações de API é especialmente importante quando você está solucionando problemas ou quando está tentando entender como o serviço de nuvem funciona. Normalmente, é um desafio, porque você não tem acesso ao tempo de execução do serviço de nuvem e também pode não ter acesso às ferramentas de monitoramento para a API da nuvem. Usando o Dev Proxy e os túneis de desenvolvimento, você pode inspecionar as solicitações de API que os serviços de nuvem emitem para APIs de nuvem.
Importante
Antes de continuar, instale os túneis de desenvolvimento e configure a ferramenta para uso.
Como os serviços de nuvem chamam APIs de nuvem
Quando você integra seu aplicativo com serviços de nuvem, o serviço de nuvem chama sua API na nuvem. O diagrama a seguir ilustra esse cenário:
Para inspecionar solicitações de API que o serviço de nuvem emite, você precisa acessar as ferramentas de monitoramento para a API de nuvem. Muitas vezes, você não tem acesso a essas ferramentas. Você pode contornar essa limitação usando um ambiente de preparação. No entanto, é demorado configurar e manter um ambiente de preparação. Além disso, se você não possui a API de nuvem, talvez não consiga configurar um ambiente de preparação.
Inspecione solicitações de API usando Dev Proxy e túneis de desenvolvimento
Usando o Dev Proxy e os túneis de desenvolvimento, você pode inspecionar as solicitações de API que o serviço de nuvem emite para a API de nuvem.
Em vez de chamar a API de nuvem diretamente, você configura o serviço de nuvem para chamar o túnel de desenvolvimento executado em sua máquina local (1). Configure o túnel de desenvolvimento para usar um cabeçalho de host intercetado pelo Proxy de Desenvolvimento. Cada vez que o serviço de nuvem chama o túnel de desenvolvimento, ele passa a solicitação para o Dev Proxy, que o interceta (2). Usando o Dev Proxy RewritePlugin, você altera a URL da solicitação intercetada e a encaminha para a API de nuvem (3). A API na nuvem processa a solicitação e retorna uma resposta ao Dev Proxy (4). O Dev Proxy passa a resposta para o túnel de desenvolvimento (5), que a encaminha para o serviço de nuvem (6). Como a solicitação é roteada por meio de sua máquina local, você pode inspecionar suas informações, incluindo URL, cabeçalhos e corpo, e a resposta da API de nuvem.
Cenário
Digamos que você queira inspecionar solicitações de API que um serviço de nuvem emite para a API JSONPlaceholder de demonstração localizada em https://jsonplaceholder.typicode.com
. Ao combinar o Dev Proxy e os túneis de desenvolvimento, você pode intercetar as solicitações e inspecionar suas informações.
Você pode inspecionar as solicitações usando ferramentas de inspeção de túneis de desenvolvimento ou usando o DevToolkit Proxy de Desenvolvimento. Ambas as ferramentas usam as Ferramentas de desenvolvimento do Chrome para mostrar informações sobre solicitações e respostas intercetadas. Ao usar as ferramentas de inspeção de túneis de desenvolvimento, você vê a URL do túnel de desenvolvimento como a URL de solicitação. Em comparação, quando você usa o Dev Proxy DevToolsPlugin, você vê como o Dev Proxy interceta a solicitação, usando a URL local ou reescrita.
Inspecione solicitações de API usando Proxy de Desenvolvimento, túneis de desenvolvimento e ferramentas de inspeção de túneis de desenvolvimento
Configure o Dev Proxy para intercetar solicitações para
https://jsonplaceholder.typicode.com
ehttp://jsonplaceholder.typicode.local
:{ "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.23.0/rc.schema.json", "plugins": [ { "name": "RewritePlugin", "enabled": true, "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll", "configSection": "rewritePlugin" } ], "urlsToWatch": [ "https://jsonplaceholder.typicode.com/*", "http://jsonplaceholder.typicode.local/*" ], "rewritePlugin": { "rewritesFile": "devproxy-rewrites.json" }, "logLevel": "information", "newVersionNotification": "stable", "showSkipMessages": true }
O arquivo de configuração usa o RewritePlugin para reescrever a URL das solicitações intercetadas. Ele também configura o Dev Proxy para intercetar solicitações
https://jsonplaceholder.typicode.com
ehttp://jsonplaceholder.typicode.local
URLs.Nota
Embora não seja necessário usar um
.local
domínio, é uma boa prática que ajuda a distinguir entre as solicitações reais e intercetadas. Observe também que, para o.local
domínio, você usa o protocolo HTTP, em vez de HTTPS. Os túneis de desenvolvimento não suportam HTTPS para rotear solicitações para cabeçalhos de host personalizados em sua máquina local, e é por isso que você precisa usar HTTP.Crie um arquivo de regravação chamado
devproxy-rewrites.json
que altere a URL das solicitações intercetadas:{ "rewrites": [ { "in": { "url": "^http://jsonplaceholder.typicode.local(.*)" }, "out": { "url": "https://jsonplaceholder.typicode.com$1" } } ] }
O arquivo de regravação altera a URL das solicitações intercetadas de
http://jsonplaceholder.typicode.local
parahttps://jsonplaceholder.typicode.com
.Inicie o Dev Proxy executando na linha
devproxy
de comando.Inicie o túnel de desenvolvimento executando na linha
devtunnel host --host-header jsonplaceholder.typicode.local --port-numbers 8000 --allow-anonymous
de comando.Usando este comando, você abre um novo túnel de desenvolvimento em sua máquina. Você o mapeia para a porta 8000, que é onde o Dev Proxy escuta as solicitações de entrada. Você também especifica o cabeçalho do host que o Dev Proxy interceta.
Observe a URL do túnel de desenvolvimento que você pode usar para configurar o serviço de nuvem para chamar sua máquina local, por exemplo
https://tunnel_id-8000.euw.devtunnels.ms
.Em um navegador da Web, abra a URL de inspeção do túnel de desenvolvimento, por exemplo
https://tunnel_id-8000-inspect.euw.devtunnels.ms
.Simule um serviço de nuvem chamando a API de nuvem usando a URL do túnel de desenvolvimento, executando na linha de comando:
curl https://tunnel_id-8000.euw.devtunnels.ms/posts/1
.Nota
Observe que o nome do host corresponde à URL do túnel de desenvolvimento em sua máquina. O caminho corresponde ao caminho da API que você deseja inspecionar.
Observe como o Dev Proxy interceta a solicitação e a encaminha para a API na nuvem, eventualmente retornando a resposta ao cliente.
No navegador da Web, observe as informações sobre a solicitação intercetada e a resposta da API na nuvem.
Nota
Observe que a URL da solicitação gravada é a URL do túnel de desenvolvimento. O cabeçalho de host gravado é o cabeçalho de host que o Dev Proxy interceta.
Feche o túnel de desenvolvimento e pare o Dev Proxy pressionando Ctrl+C em suas respetivas sessões na linha de comando.
Inspecione solicitações de API usando Dev Proxy e DevToolsPlugin
Outra maneira de inspecionar as solicitações de API que o serviço de nuvem emite é usando o DevToolsPlugin do Dev Proxy. A diferença entre usar o DevToolsPlugin e as ferramentas de inspeção de túneis de desenvolvimento é que o DevToolsPlugin mostra como o Dev Proxy interceta a solicitação, usando a URL local ou reescrita.
Configure o Dev Proxy para usar o DevToolsPlugin para inspecionar solicitações de API usando a URL intercetada
Primeiro, vamos configurar o Dev Proxy para inspecionar solicitações de API na nuvem. Vamos configurar o DevToolsPlugin para mostrar as informações sobre a URL antes que o Dev Proxy a reescreva.
Atualize o arquivo de configuração do Dev Proxy para usar o DevToolsPlugin:
{ "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.23.0/rc.schema.json", "plugins": [ { "name": "DevToolsPlugin", "enabled": true, "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll" }, { "name": "RewritePlugin", "enabled": true, "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll", "configSection": "rewritePlugin" } ], "urlsToWatch": [ "https://jsonplaceholder.typicode.com/*", "http://jsonplaceholder.typicode.local/*" ], "rewritePlugin": { "rewritesFile": "devproxy-rewrites.json" }, "logLevel": "information", "newVersionNotification": "stable", "showSkipMessages": true }
Nota
Observe que adicionamos o DevToolsPlugin antes do RewritePlugin. Ao adicionar o DevToolsPlugin primeiro, ele mostra as informações sobre a solicitação intercetada antes de ser reescrita.
Inicie o Dev Proxy executando na linha
devproxy
de comando. Observe que o Dev Proxy abre uma janela do navegador da Web com as Ferramentas de Desenvolvimento do Chrome visíveis.Inicie o túnel de desenvolvimento executando na linha
devtunnel host --host-header jsonplaceholder.typicode.local --port-numbers 8000 --allow-anonymous
de comando.Simule um serviço de nuvem chamando a API de nuvem usando a URL do túnel de desenvolvimento, executando na linha de comando:
curl https://tunnel_id-8000.euw.devtunnels.ms/posts/1
.No navegador da Web com as Ferramentas de Desenvolvimento do Chrome, observe as informações sobre a solicitação intercetada e a resposta da API na nuvem.
Nota
Observe que a URL da solicitação gravada é a URL da API na nuvem. O cabeçalho de host gravado é o cabeçalho de host que o Dev Proxy interceta.
Feche o túnel de desenvolvimento e pare o Dev Proxy pressionando Ctrl+C em suas respetivas sessões na linha de comando.
Configure o Dev Proxy para usar o DevToolsPlugin para inspecionar solicitações de API usando a URL reescrita
Em seguida, vamos atualizar a configuração do Dev Proxy para mostrar as informações sobre a URL reescrita.
Atualize o arquivo de configuração do Dev Proxy movendo o DevToolsPlugin após o RewritePlugin:
{ "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.23.0/rc.schema.json", "plugins": [ { "name": "RewritePlugin", "enabled": true, "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll", "configSection": "rewritePlugin" }, { "name": "DevToolsPlugin", "enabled": true, "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll" } ], "urlsToWatch": [ "https://jsonplaceholder.typicode.com/*", "http://jsonplaceholder.typicode.local/*" ], "rewritePlugin": { "rewritesFile": "devproxy-rewrites.json" }, "logLevel": "information", "newVersionNotification": "stable", "showSkipMessages": true }
Inicie o Dev Proxy executando na linha
devproxy
de comando. Observe que o Dev Proxy abre uma janela do navegador da Web com as Ferramentas de Desenvolvimento do Chrome visíveis.Inicie o túnel de desenvolvimento executando na linha
devtunnel host --host-header jsonplaceholder.typicode.local --port-numbers 8000 --allow-anonymous
de comando.Simule um serviço de nuvem chamando a API de nuvem usando a URL do túnel de desenvolvimento, executando na linha de comando:
curl https://tunnel_id-8000.euw.devtunnels.ms/posts/1
.No navegador da Web com as Ferramentas de Desenvolvimento do Chrome, observe as informações sobre a solicitação intercetada e a resposta da API na nuvem.
Nota
Observe que tanto a URL de solicitação gravada quanto o cabeçalho do host mostram a URL da API de nuvem.
Feche o túnel de desenvolvimento e pare o Dev Proxy pressionando Ctrl+C em suas respetivas sessões na linha de comando.
Resumo
Usando o Dev Proxy e os túneis de desenvolvimento, você pode inspecionar as solicitações de API que os serviços de nuvem emitem para APIs de nuvem. Você pode usar as ferramentas de inspeção de túneis de desenvolvimento ou o DevToolsPlugin do Dev Proxy para inspecionar as solicitações. Ambas as ferramentas mostram as informações sobre as solicitações intercetadas, incluindo a URL, cabeçalhos e corpo, e a resposta da API na nuvem. Usando o Dev Proxy e os túneis de desenvolvimento, você pode entender melhor como os serviços de nuvem interagem com APIs de nuvem e solucionar problemas de forma mais eficaz.
Próximos passos
Saiba mais sobre o RewritePlugin.