Introdução ao Proxy de Programador

O Dev Proxy é uma ferramenta de linha de comandos que o ajuda a simular comportamentos e erros de APIs na cloud para o ajudar a criar aplicações resilientes.

Neste tutorial, vai aprender a instalar, executar e configurar o Proxy de Programador.

Se tiver alguma dificuldade, não hesite em contactar-nos ao levantar um novo problema e temos o prazer de ajudá-lo.

Instalar o Proxy de Programador

A forma mais fácil de instalar o Proxy de Programador é através do winget. Em alternativa, pode instalar manualmente o Dev Proxy.

Para instalar o Dev Proxy com winget, execute o seguinte comando:

winget install Microsoft.DevProxy --silent

Importante

O instalador do Proxy Dev adiciona uma nova entrada ao PATH. Para utilizar o Proxy Dev após a instalação, tem de reiniciar a linha de comandos para garantir que as variáveis de ambiente PATH foram atualizadas.

Nota

Para experimentar as funcionalidades de pré-visualização mais recentes, instale a versão beta do Proxy de Programador.

Para instalar o Dev Proxy com winget, execute o seguinte comando:

winget install Microsoft.DevProxy.Beta --silent

Para executar a versão beta do Proxy de Programador, utilize devproxy-beta

A forma mais fácil de instalar o Proxy de Programador é através do Homebrew. Em alternativa, pode instalar manualmente o Dev Proxy.

Para instalar o Proxy de Programador com o Homebrew, execute os seguintes comandos:

brew tap microsoft/dev-proxy
brew install dev-proxy

Nota

Para experimentar as funcionalidades de pré-visualização mais recentes, instale a versão beta do Proxy de Programador.

Para instalar o Proxy de Programador com o Homebrew, execute os seguintes comandos:

brew tap microsoft/dev-proxy
brew install dev-proxy-beta

Para executar a versão beta do Proxy de Programador, utilize devproxy-beta

Iniciar o Proxy de Programador pela primeira vez

Da primeira vez que iniciar o Proxy de Programador no seu computador, existem alguns passos a seguir para garantir que o Proxy de Programador pode intercetar pedidos a partir do computador e responder com êxito. Não terá de repetir estes passos após a primeira execução.

  1. Inicie o Proxy de Programador. Abra uma sessão de linha de comandos. Introduza devproxy e prima Enter.
  2. Certificado de fidedignidade. O Proxy de Programador instala um certificado com o nome Dev Proxy CA. É apresentado um aviso. Selecione Yes para confirmar que pretende instalar o certificado. O Proxy de Programador utiliza este certificado para desencriptar o tráfego HTTPS enviado a partir do seu computador.
  3. Permitir o acesso à firewall. A Firewall do Windows bloqueia o proxy. É apresentado um aviso. Selecione Allow access o botão para permitir o tráfego através da firewall.
  1. Inicie o Proxy de Programador. Abra uma sessão de linha de comandos. Introduza devproxy e prima Enter.
  2. Certificado de fidedignidade. O Proxy de Programador instala um certificado com o nome Dev Proxy CA, que utiliza para desencriptar o tráfego HTTPS enviado a partir do seu computador. É apresentado um aviso. Prima y para confirmar que pretende confiar no certificado.
  3. Aceitar ligações recebidas. É apresentado um aviso. Selecione Allow para confirmar.

A linha de comandos apresenta o seguinte resultado:

8 error responses loaded from devproxy-errors.json
Listening on 127.0.0.1:8000...
Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

Por predefinição, o Proxy de Programador está configurado para:

  • Intercetar pedidos feitos a qualquer ponto final da API de Marcador de Posição JSON
  • Simular respostas de erros da API e limitação da API com uma taxa de falha de 50%

Intercetar pedidos

O Proxy de Programador irá intercetar pedidos feitos a URLs conhecidos a partir de qualquer aplicação no seu computador. Quando é detetado um pedido, o Proxy de Programador transmite o pedido para a API (não efetua nenhuma ação) ou devolve uma resposta.

  • Envie um pedido para a API de Marcador de Posição JSON a partir da linha de comandos e regresse ao processo de proxy para ver a saída.

No PowerShell, utilize o Invoke-WebRequest cmdlet para enviar um pedido GET para a API de Marcador de Posição JSON.

Invoke-WebRequest -Uri https://jsonplaceholder.typicode.com/posts

Se utilizar curl, envie um pedido GET para a API de Marcador de Posição JSON com o seguinte comando.

curl -ix http://localhost:8000 https://jsonplaceholder.typicode.com/posts

Também pode utilizar um cliente de API como o Postman para enviar um pedido GET para https://jsonplaceholder.typicode.com/posts.

É apresentada uma entrada com algumas informações básicas sobre o pedido recebido e a ação que o Proxy de Programador realizou. O Proxy de Programador simula uma resposta de erro com uma probabilidade de 50%. Se o pedido não devolver um erro, o Proxy Dev passa-o.

 request     GET https://jsonplaceholder.typicode.com/posts
     api   ╭ Passed through
           ╰ GET https://jsonplaceholder.typicode.com/posts
  • Repita o envio de pedidos para a API de Marcador de Posição JSON a partir da linha de comandos, até que seja devolvida uma resposta de erro.
 request     GET https://jsonplaceholder.typicode.com/posts
     api   ╭ Passed through
           ╰ GET https://jsonplaceholder.typicode.com/posts
 request     GET https://jsonplaceholder.typicode.com/posts
   chaos   ╭ 403 Forbidden
           ╰ GET https://jsonplaceholder.typicode.com/posts

Quando o Proxy Dev devolve uma resposta de erro, é apresentada uma chaos etiqueta na entrada.

  • Experimente enviar pedidos para outros pontos finais disponíveis na API de Marcador de Posição JSON
    • https://jsonplaceholder.typicode.com/posts
    • https://jsonplaceholder.typicode.com/posts/1
    • https://jsonplaceholder.typicode.com/posts/1/comments
    • https://jsonplaceholder.typicode.com/comments?postId=1

Parar o Proxy de Programador em segurança

Quando já não precisar que o Proxy de Programador esteja em execução, deve sempre pará-lo em segurança.

  • Prima Ctrl + C para parar o Proxy de Programador em segurança.

Se encerrar a sessão da linha de comandos, o Proxy Dev não anula o registo corretamente como proxy de sistema e poderá deparar-se com alguns problemas comuns.

Atualizar os URLs para watch

Por predefinição, o Proxy de Programador está configurado para intercetar qualquer pedido feito à API de Marcador de Posição JSON. Pode configurar o Proxy de Programador para intercetar pedidos para qualquer API HTTP.

  • Numa linha de comandos, execute brew list dev-proxy para localizar a pasta de instalação.
  • Abra a pasta de instalação do Proxy Dev no Finder.
  • Na pasta de instalação do Proxy Dev, abra devproxyrc.json num editor de texto.
  • Localize a urlsToWatch matriz.
"urlsToWatch": [
  "https://jsonplaceholder.typicode.com/*"
],

A urlsToWatch matriz representa os URLs conhecidos. O Proxy Dev observa pedidos da entrada atual para qualquer ponto final. A entrada utiliza um asterisco após o URL como caráter universal. Adicionar mais entradas a esta matriz expande os URLs que o Dev Proxy observa.

Vamos considerar que não quer que o Dev Proxy interceta pedidos feitos a um ponto final específico.

  • Adicione uma nova entrada à urlsToWatch matriz.
"urlsToWatch": [
  "!https://jsonplaceholder.typicode.com/posts/2",
  "https://jsonplaceholder.typicode.com/*"
],

O ponto de exclamação no início do URL indica ao Proxy de Programador para ignorar quaisquer pedidos que correspondam a esse URL. Pode misturar e combinar marcas de exclamação e asteriscos num URL.

  • Na linha de comandos, introduza devproxy e prima Enter para iniciar o Proxy de Programador.
  • Envie um pedido para a https://jsonplaceholder.typicode.com/posts/2 partir da linha de comandos e veja o resultado.

É apresentada uma entrada que confirma que o pedido foi ignorado e transmitido para a API.

request     GET https://jsonplaceholder.typicode.com/posts/2
     api   ╭ Passed through
           ╰ GET https://jsonplaceholder.typicode.com/posts/2

A ordem pela qual os URLs estão listados na urlsToWatch matriz é importante. O Proxy Dev processa estes URLs por ordem. Quando um URL corresponde, não é processado novamente. Por conseguinte, colocar o URL em primeiro lugar garante que o pedido é ignorado antes de o URL seguinte ser processado.

Alterar taxa de falhas

Por predefinição, o Proxy de Programador está configurado para falhar pedidos com uma probabilidade de 50% para URLs que estão a ser observados. Pode aumentar ou diminuir a probabilidade de um pedido devolver uma resposta de erro.

Vamos atualizar a taxa de falhas para que cada pedido à API de Marcador de Posição JSON devolva uma resposta de erro.

  • Na pasta de instalação do Proxy Dev, abra devproxyrc.json num editor de texto.
  • Localize a rate propriedade e atualize o valor de 50 para 100.

O devproxyrc.json ficheiro contém definições de configuração que são utilizadas quando inicia o Proxy de Programador. Ao alterar as definições de configuração, deve parar e iniciar sempre o Proxy de Programador para que as alterações sejam mantidas.

  • Na linha de comandos, introduza devproxy e prima Enter para iniciar o Proxy de Programador.
  • Envie um pedido para a API de Marcador de Posição JSON a partir da linha de comandos e veja o resultado.

Em alternativa, pode substituir as definições de configuração no runtime ao utilizar a opção --failure-rate ao iniciar o Proxy de Programador.

devproxy --failure-rate 100
  • Prima Ctrl + C para parar o Proxy de Programador em segurança.

Simular limitação

Por predefinição, o Proxy de Programador devolve um intervalo de respostas de erro genéricas 400 e 500. Pode personalizar estas respostas de erro às suas próprias necessidades.

Por predefinição, o Proxy de Programador utiliza plug-ins para ativar diferentes comportamentos de API. Por predefinição, ativamos dois plug-ins.

  • O plug-in GenericRandomErrorPlugin permite que o Proxy deV responda com uma resposta de erro.
  • O plug-in RetryAfterPlugin fornece a capacidade de o Proxy de Programador injetar um valor dinâmico no cabeçalho Retry-After na resposta do erro.

Vamos alterar a configuração para que o Proxy Dev devolva sempre uma 429 Too Many requests resposta de erro para simular a limitação.

Primeiro, vamos localizar a localização do ficheiro que contém as definições de erro.

  • Na pasta de instalação do Proxy Dev, abra devproxyrc.json num editor de texto.
  • plugins Na matriz, localize a entrada do plug-in GenericRandomErrorPlugin. Anote o valor da configSection propriedade .
  • Mais abaixo no ficheiro, localize o genericRandomErrorPlugin objeto. Anote o valor da errorsFile propriedade .

Dica

A localização do ficheiro de erros também é apresentada na saída quando inicia o Proxy de Programador.

  • Na pasta de instalação do Proxy Dev, abra devproxy-errors.json num editor de texto.
  • Remova todas as entradas de resposta na responses matriz, exceto a 429 resposta.
{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/genericrandomerrorplugin.schema.json",
  "responses": [
    {
      "statusCode": 429,
      "body": {
        "message": "Too Many Requests",
        "details": "The user has sent too many requests in a given amount of time (\"rate limiting\")."
      },
      "headers": {
        "Retry-After": "@dynamic"
      }
    }
  ]
}
  • Na linha de comandos, introduza devproxy e prima Enter para iniciar o Proxy de Programador.
  • Envie um pedido para a API de Marcador de Posição JSON a partir da linha de comandos e veja o resultado.
 request     GET https://jsonplaceholder.typicode.com/posts
   chaos   ╭ 429 TooManyRequests
           ╰ GET https://jsonplaceholder.typicode.com/posts
  • Prima Ctrl + C para parar o Proxy de Programador em segurança.

Passo seguinte

Saiba como utilizar o Proxy Dev para simular erros aleatórios para a sua própria aplicação.