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.
- Inicie o Proxy de Programador. Abra uma sessão de linha de comandos. Introduza
devproxy
e prima Enter. - Certificado de fidedignidade. O Proxy de Programador instala um certificado com o nome
Dev Proxy CA
. É apresentado um aviso. SelecioneYes
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. - 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.
- Inicie o Proxy de Programador. Abra uma sessão de linha de comandos. Introduza
devproxy
e prima Enter. - 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. - 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 de50
para100
.
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 daconfigSection
propriedade .- Mais abaixo no ficheiro, localize o
genericRandomErrorPlugin
objeto. Anote o valor daerrorsFile
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 a429
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.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários