Registrar e exportar a atividade de proxy

De relance
Objetivo: Gravar e exportar a atividade do Proxy de Desenvolvimento para um ficheiro de relatório
Tempo: 10 minutos
Plugins:ExecutionSummaryPlugin, MarkdownReporter
Pré-requisitos:Configurar o Proxy de Desenvolvimento

Para registrar e exportar a atividade de proxy, use o ExecutionSummaryPlugin e um plug-in de relatório em seu arquivo de configuração.

O exemplo a seguir mostra como configurar o Dev Proxy para registrar e exportar a atividade de proxy usando o ExecutionSummaryPlugin e o plug-in MarkdownReporter .

Ficheiro: devproxyrc.json

{
  "plugins": [
    {
      "name": "ExecutionSummaryPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    },
    {
        "name": "MarkdownReporter",
        "enabled": true,
        "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ]
}

Tip

Em vez de construir a configuração você próprio, pode descarregar o predefinido pronto api-inventory , que regista os URLs a que a sua aplicação acede e um resumo da sua atividade:

devproxy config get api-inventory
devproxy --config-file "~dataFolder/configs/api-inventory/.devproxy/devproxyrc.json" --urls-to-watch "https://api.contoso.com/*"

Para mais informações, consulte Usar configurações de predefinição.

Nota

Para exportar a atividade, o plug-in do repórter deve ser habilitado no arquivo de configuração e colocado após o ExecutionSummaryPlugin na lista de plug-ins. Recomenda-se colocar um plugin reporter no final da lista de plugins.

Para registrar a atividade, o Proxy de Desenvolvimento deve ser colocado no modo de registro.

Há duas maneiras de começar a gravar:

  • Grave imediatamente. Inicie o proxy com a opção --record, por exemplo, devproxy --record.
  • Registo ad-hoc. Pressione R enquanto o proxy está em execução.

Quando a gravação está habilitada, ◉ Recording... é mostrada na saída do proxy.

Para gerar um relatório da atividade gravada, pare a gravação.

Há duas maneiras de parar a gravação:

  • Parar proxy. Pressione Ctrl + C.
  • Interromper adhoc. Pressione S.

Por padrão, as atividades agrupadas por URL. Para agrupar a atividade por tipo de mensagem, use a --summary-group-by opção.

devproxy --record --summary-group-by messageType

Onde são redigidos relatórios

Quando para a gravação, cada repórter ativado escreve um ficheiro para cada relatório produzido por um plugin de relatório. O Dev Proxy escreve os ficheiros no diretório de trabalho atual, que é a pasta a partir da qual iniciaste o Dev Proxy. Quando iniciares o Dev Proxy em segundo plano, por exemplo num pipeline de CI, certifica-te de que o inicias na pasta onde queres que os relatórios sejam armazenados.

Os ficheiros de relatório utilizam o seguinte padrão de nomenclatura:

<ReportingPlugin>_<Reporter>.<ext>

Por exemplo, a configuração neste artigo produz um ficheiro chamado ExecutionSummaryPlugin_MarkdownReporter.md.

Se um ficheiro com esse nome já existe, o Dev Proxy não o sobrescreve. Em vez disso, adiciona um carimbo temporal no yyyyMMddHHmmss formato ao nome do ficheiro, por exemplo ExecutionSummaryPlugin_MarkdownReporter_20261105103000.md. O Dev Proxy regista o nome de cada ficheiro de relatório que escreve, por exemplo:

Writing report ExecutionSummaryPlugin to ExecutionSummaryPlugin_MarkdownReporter.md...

A tabela seguinte lista as extensões que cada gerador de relatórios utiliza.

Jornalista Extension
JsonRepórter .json (alguns relatórios usam uma extensão diferente, por exemplo .jsonc para o UrlDiscoveryPlugin)
MarkdownReporter .md
PlainTextReporter .txt

Nota

Toda a gravação é local. Nenhum dado é enviado para a Microsoft.

Gravar a partir de scripts e CI

Em scripts e pipelines CI/CD, não podes carregar em teclas para iniciar e parar a gravação. Em vez disso, executa o Dev Proxy em segundo plano e controla a gravação usando a API do Dev Proxy. Todos os pedidos de API requerem um token Bearer. Para definir o token antecipadamente, define a variável de ambiente DEV_PROXY_API_TOKEN com um valor de, pelo menos, 32 caracteres antes de iniciares o Dev Proxy.

A sequência mínima é:

  1. Defina DEV_PROXY_API_TOKEN para um valor aleatório de pelo menos 32 caracteres.
  2. Inicie o Proxy de Desenvolvimento em segundo plano: devproxy --detach --as-system-proxy false -c devproxyrc.json.
  3. Aguarde até que GET /proxy seja bem-sucedido.
  4. Começar a gravar: POST /proxy com {"recording": true}.
  5. Executa a tua carga de trabalho com as variáveis de ambiente HTTP_PROXY e HTTPS_PROXY a apontar para Dev Proxy.
  6. Parar a gravação: POST /proxy com {"recording": false}. A solicitação regressa depois de os geradores de relatórios terminarem, para que os relatórios estejam prontos quando termina.
  7. Desligar Proxy de Desenvolvimento: POST /proxy/stopProxy.

O Dev Proxy grava os relatórios na pasta de onde o iniciaste.

#!/usr/bin/env bash
set -euo pipefail

# 1. use a known API token (at least 32 characters)
export DEV_PROXY_API_TOKEN=$(openssl rand -hex 32)
api=http://127.0.0.1:8897
auth="Authorization: Bearer $DEV_PROXY_API_TOKEN"

# 2. start Dev Proxy in the background
devproxy --detach --as-system-proxy false -c devproxyrc.json

# 3. wait for the API
until curl -sf -H "$auth" "$api/proxy" > /dev/null; do sleep 1; done

# 4. start recording
curl -sf -X POST "$api/proxy" -H "$auth" -H "Content-Type: application/json" -d '{"recording": true}'

# 5. run the workload through Dev Proxy
HTTP_PROXY=http://127.0.0.1:8000 HTTPS_PROXY=http://127.0.0.1:8000 npm test

# 6. stop recording and wait for the reports
curl -sf -X POST "$api/proxy" -H "$auth" -H "Content-Type: application/json" -d '{"recording": false}'

# 7. shut down Dev Proxy
curl -sf -X POST "$api/proxy/stopProxy" -H "$auth"

Os exemplos usam a porta proxy predefinida 8000 e a porta 8897 da API. Define as variáveis de ambiente proxy apenas para a carga de trabalho, para que as chamadas de API não passem pelo Dev Proxy. Para intercetar o tráfego HTTPS, a carga de trabalho deve confiar no certificado raiz do Dev Proxy. Para mais informações sobre a execução do Dev Proxy em pipelines, incluindo confiar no certificado, veja Usar o Dev Proxy em cenários de CI/CD.

Consulte também