Compartilhar via


Inspecionar solicitações de API emitidas pelos serviços de nuvem

Ao integrar seu aplicativo aos serviços de nuvem, um dos desafios que você pode enfrentar é entender como o serviço de nuvem interage com as APIs que ele usa. Poder inspecionar solicitações de API é especialmente importante ao solucionar problemas ou ao tentar entender como o serviço de nuvem funciona. Normalmente, é desafiador, porque você não tem acesso ao runtime do serviço de nuvem e também pode não ter acesso às ferramentas de monitoramento da API de nuvem. Ao usar o Proxy de Desenvolvimento e o túnel do desenvolvedor, você poderá 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 do desenvolvedor e configure a ferramenta para uso.

Como os serviços de nuvem chamam APIs de nuvem

Quando você integra seu aplicativo aos serviços de nuvem, o serviço de nuvem chama sua API na nuvem. O diagrama a seguir ilustra este cenário:

Diagrama que mostra como um serviço de nuvem chama uma API de nuvem.

Para inspecionar solicitações de API que o serviço de nuvem emite, você precisa de acesso às ferramentas de monitoramento para a API de nuvem. Muitas vezes, você não tem acesso a essas ferramentas. É possível contornar essa limitação usando um ambiente de preparo. No entanto, é demorado configurar e manter um ambiente de preparo. Além disso, se você não possui a API de nuvem, talvez não consiga configurar um ambiente de preparo.

Inspecionar solicitações de API usando o Proxy de Desenvolvimento e o túnel do desenvolvedor

Usando o Proxy de Desenvolvimento e o túnel do desenvolvedor, inspecione as solicitações de API que o serviço de nuvem emite para a API de nuvem.

Diagrama que mostra como você pode inspecionar chamadas à API de nuvem usando o túnel do desenvolvedor e o Proxy de Desenvolvimento.

Em vez de chamar a API de nuvem diretamente, configure o serviço de nuvem para chamar o túnel do desenvolvedor executado em seu computador local (1). Você configura o Túnel de Desenvolvimento para usar um cabeçalho de host que o Proxy de Desenvolvimento intercepta. Sempre que o serviço de nuvem chama o túnel do desenvolvedor, ele passa a solicitação para o Proxy de Desenvolvimento que o intercepta (2). Usando o Proxy de Desenvolvimento RewritePlugin, você altera a URL da solicitação interceptada e a encaminha para a API de nuvem (3). A API de nuvem processa a solicitação e retorna uma resposta ao Proxy de Desenvolvimento (4). O Proxy de Desenvolvimento passa a resposta para o túnel do desenvolvedor (5), que o encaminha para o serviço de nuvem (6). Como a solicitação é roteada por meio do computador local, você poderá 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 Proxy de Desenvolvimento e o túnel do desenvolvedor, você poderá interceptar as solicitações e inspecionar suas informações.

Inspecione as solicitações usando ferramentas de inspeção do túnel do desenvolvedor ou usando o DevToolsPlugin do Proxy de Desenvolvimento. Ambas as ferramentas usam as Ferramentas de Desenvolvimento do Chrome para mostrar informações sobre solicitações e respostas interceptadas. Ao usar as ferramentas de inspeção do túnel do desenvolvedor, você visualiza a URL do túnel do desenvolvedor como a URL de solicitação. Em comparação, ao usar o DevToolsPlugin do Proxy de Desenvolvimento, você visualizará como o Proxy de Desenvolvimento intercepta a solicitação, usando a URL local ou reescrita.

Inspecionar solicitações de API usando o Proxy de Desenvolvimento, túnel do desenvolvedor e ferramentas de inspeção do túnel do desenvolvedor

  1. Configurar o Proxy de Desenvolvimento para interceptar solicitações para https://jsonplaceholder.typicode.com e http://jsonplaceholder.typicode.local:

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rc.schema.json",
      "plugins": [
        {
          "name": "RewritePlugin",
          "enabled": true,
          "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
          "configSection": "rewritePlugin"
        }
      ],
      "urlsToWatch": [
        "https://jsonplaceholder.typicode.com/*",
        "http://jsonplaceholder.typicode.local/*"
      ],
      "rewritePlugin": {
        "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rewriteplugin.schema.json",
        "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 interceptadas. Ele também configura o Proxy de Desenvolvimento para interceptar solicitações para as URLs https://jsonplaceholder.typicode.com e http://jsonplaceholder.typicode.local.

    Observação

    Embora não seja necessário usar um domínio .local, é uma boa prática que ajuda a distinguir entre as solicitações reais e interceptadas. Observe também que, para o domínio .local, você usa o protocolo HTTP, em vez de HTTPS. O túnel do desenvolvedor não dá suporte a HTTPS para roteamento de solicitações para cabeçalhos de host personalizados em seu computador local e é por isso que você precisa usar HTTP.

  2. Crie um arquivo de reescrita chamado devproxy-rewrites.json que altera a URL das solicitações interceptadas:

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rewriteplugin.rewritesfile.schema.json",
      "rewrites": [
        {
          "in": {
            "url": "^http://jsonplaceholder.typicode.local(.*)"
          },
          "out": {
            "url": "https://jsonplaceholder.typicode.com$1"
          }
        }
      ]
    }
    

    O arquivo de reescrita altera a URL das solicitações interceptadas de http://jsonplaceholder.typicode.local para https://jsonplaceholder.typicode.com.

  3. Inicie o Proxy de Desenvolvimento executando na linha de comando devproxy.

    Captura de tela da linha de comando com o Proxy de Desenvolvimento em execução.

  4. Inicie o túnel do desenvolvedor executando na linha de comando devtunnel host --host-header jsonplaceholder.typicode.local --port-numbers 8000 --allow-anonymous.

    Captura de tela da linha de comando executando o Proxy de Desenvolvimento e o túnel do desenvolvedor.

    Ao usar esse comando, você abre um novo túnel do desenvolvedor em seu computador. Você o mapeia para a porta 8000, que é onde o Proxy de Desenvolvimento escuta solicitações de entrada. Você também especifica o cabeçalho do host interceptado pelo Proxy de Desenvolvimento.

  5. Observe a URL do túnel do desenvolvedor que você poderá usar para configurar o serviço de nuvem para chamar seu computador local, por exemplo https://tunnel_id-8000.euw.devtunnels.ms.

  6. 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.

  7. Simule um serviço de nuvem chamando a API de nuvem usando a URL do túnel do desenvolvedor, executando na linha de comando: curl https://tunnel_id-8000.euw.devtunnels.ms/posts/1.

    Observação

    Observe que o nome do host corresponde à URL do túnel do desenvolvedor em seu computador. O caminho corresponde ao caminho da API que você deseja inspecionar.

    Captura de tela da linha de comando executando o Proxy de Desenvolvimento e um túnel do desenvolvedor e curl chamando o túnel do desenvolvedor.

  8. Observe como o Proxy de Desenvolvimento intercepta a solicitação e a encaminha para a API de nuvem, eventualmente retornando a resposta ao cliente.

  9. No navegador da Web, observe as informações sobre a solicitação interceptada e a resposta da API de nuvem.

    Captura de tela de um navegador da Web com ferramentas de inspeções do túnel do desenvolvedor mostrando a solicitação interceptada.

    Observação

    A URL de solicitação registrada é a URL do túnel do desenvolvedor. O cabeçalho do host gravado é o cabeçalho do host interceptado pelo Proxy de Desenvolvimento.

  10. Feche o túnel de desenvolvimento e interrompa o proxy de desenvolvimento pressionando Ctrl+C em suas respectivas sessões na linha de comando.

Inspecionar solicitações de API usando o Proxy de Desenvolvimento e o DevToolsPlugin

Outra maneira de inspecionar as solicitações de API que o serviço de nuvem emite é usando o DevToolsPlugin do Proxy de Desenvolvimento. A diferença entre usar o DevToolsPlugin e as ferramentas de inspeção do túnel do desenvolvedor é que o DevToolsPlugin mostra como o Proxy de Desenvolvimento intercepta a solicitação, usando a URL local ou reescrita.

Configurar o Proxy de Desenvolvimento para usar o DevToolsPlugin para inspecionar solicitações de API usando a URL interceptada

Primeiro, vamos configurar o Proxy de Desenvolvimento para inspecionar solicitações de API de nuvem. Vamos configurar o DevToolsPlugin para mostrar as informações sobre a URL antes que o Proxy de Desenvolvimento a reescreva.

  1. Atualize o arquivo de configuração do Proxy de Desenvolvimento para usar o DevToolsPlugin:

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rc.schema.json",
      "plugins": [
        {
          "name": "DevToolsPlugin",
          "enabled": true,
          "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
        },
        {
          "name": "RewritePlugin",
          "enabled": true,
          "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
          "configSection": "rewritePlugin"
        }
      ],
      "urlsToWatch": [
        "https://jsonplaceholder.typicode.com/*",
        "http://jsonplaceholder.typicode.local/*"
      ],
      "rewritePlugin": {
        "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rewriteplugin.schema.json",
        "rewritesFile": "devproxy-rewrites.json"
      },
      "logLevel": "information",
      "newVersionNotification": "stable",
      "showSkipMessages": true
    }
    

    Observação

    Adicionamos o DevToolsPlugin antes do RewritePlugin. Ao adicionar o DevToolsPlugin primeiro, ele mostra as informações sobre a solicitação interceptada antes de ser reescrita.

  2. Inicie o Proxy de Desenvolvimento executando na linha de comando devproxy. Observe que o Proxy de Desenvolvimento abre uma janela do navegador da Web com as Ferramentas de Desenvolvimento do Chrome visíveis.

  3. Inicie o túnel do desenvolvedor executando na linha de comando devtunnel host --host-header jsonplaceholder.typicode.local --port-numbers 8000 --allow-anonymous.

  4. Simule um serviço de nuvem chamando a API de nuvem usando a URL do túnel do desenvolvedor, executando na linha de comando: curl https://tunnel_id-8000.euw.devtunnels.ms/posts/1.

  5. No navegador da Web com as Ferramentas de Desenvolvimento do Chrome, observe as informações sobre a solicitação interceptada e a resposta da API de nuvem.

    Captura de tela de um navegador da Web com ferramentas de inspeções do Proxy de Desenvolvimento mostrando a solicitação interceptada.

    Observação

    A URL de solicitação registrada é a URL da API de nuvem. O cabeçalho do host gravado é o cabeçalho do host interceptado pelo Proxy de Desenvolvimento.

  6. Feche o túnel de desenvolvimento e interrompa o proxy de desenvolvimento pressionando Ctrl+C em suas respectivas sessões na linha de comando.

Configurar o Proxy de Desenvolvimento para usar o DevToolsPlugin para inspecionar solicitações de API usando a URL reescrita

Em seguida, vamos atualizar a configuração do Proxy de Desenvolvimento para mostrar as informações sobre a URL reescrita.

  1. Atualize o arquivo de configuração do Proxy de Desenvolvimento movendo o DevToolsPlugin após o RewritePlugin:

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rc.schema.json",
      "plugins": [
        {
          "name": "RewritePlugin",
          "enabled": true,
          "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
          "configSection": "rewritePlugin"
        },
        {
          "name": "DevToolsPlugin",
          "enabled": true,
          "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
        }
      ],
      "urlsToWatch": [
        "https://jsonplaceholder.typicode.com/*",
        "http://jsonplaceholder.typicode.local/*"
      ],
      "rewritePlugin": {
        "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rewriteplugin.schema.json",
        "rewritesFile": "devproxy-rewrites.json"
      },
      "logLevel": "information",
      "newVersionNotification": "stable",
      "showSkipMessages": true
    }
    
  2. Inicie o Proxy de Desenvolvimento executando na linha de comando devproxy. Observe que o Proxy de Desenvolvimento abre uma janela do navegador da Web com as Ferramentas de Desenvolvimento do Chrome visíveis.

  3. Inicie o túnel do desenvolvedor executando na linha de comando devtunnel host --host-header jsonplaceholder.typicode.local --port-numbers 8000 --allow-anonymous.

  4. Simule um serviço de nuvem chamando a API de nuvem usando a URL do túnel do desenvolvedor, executando na linha de comando: curl https://tunnel_id-8000.euw.devtunnels.ms/posts/1.

  5. No navegador da Web com as Ferramentas de Desenvolvimento do Chrome, observe as informações sobre a solicitação interceptada e a resposta da API de nuvem.

    Captura de tela de um navegador da Web com ferramentas de inspeções de Proxy de Desenvolvimento mostrando a solicitação interceptada com as URLs de API de nuvem.

    Observação

    A URL de solicitação registrada e o cabeçalho do host mostram a URL da API de nuvem.

  6. Feche o túnel de desenvolvimento e interrompa o proxy de desenvolvimento pressionando Ctrl+C em suas respectivas sessões na linha de comando.

Resumo

Ao usar o Proxy de Desenvolvimento e o túnel do desenvolvedor, você poderá inspecionar as solicitações de API que os serviços de nuvem emitem para APIs de nuvem. Use as ferramentas de inspeção do túnel do desenvolvedor ou o DevToolsPlugin do Proxy de Desenvolvimento para inspecionar as solicitações. Ambas as ferramentas mostram as informações sobre as solicitações interceptadas, incluindo a URL, os cabeçalhos e o corpo e a resposta da API de nuvem. Ao usar o Proxy de Desenvolvimento e o túnel do desenvolvedor, você poderá entender melhor como os serviços de nuvem interagem com APIs de nuvem e solucionar problemas com mais eficiência.

Próximas etapas

Saiba mais sobre o RewritePlugin.