Registrera och exportera proxyaktivitet

Överblick
Mål: Registrera och exportera Dev Proxy-aktivitet till en rapportfil
Tid: 10 minuter
Plugin-program:ExecutionSummaryPlugin, MarkdownReporter
Krav:Konfigurera Dev Proxy

Om du vill registrera och exportera proxyaktivitet använder du ExecutionSummaryPlugin och ett reporter-plugin-program i konfigurationsfilen.

I följande exempel visas hur du konfigurerar Dev Proxy för att registrera och exportera proxyaktivitet med hjälp av plugin-programmet ExecutionSummaryPlugin och MarkdownReporter .

Fil: 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

I stället för att skapa konfigurationen själv kan du ladda ned den färdiga api-inventory förinställningen, som registrerar url:erna som appen anropar och en sammanfattning av dess aktivitet:

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

Mer information finns i Använd förinställda konfigurationer.

Anmärkning

Om du vill exportera aktiviteten måste plugin-programmet reporter aktiveras i konfigurationsfilen och placeras efter ExecutionSummaryPlugin i listan med plugin-program. Vi rekommenderar att du placerar ett reporter-plugin-program i slutet av plugin-listan.

För att registrera aktivitet måste Dev Proxy placeras i inspelningsläge.

Det finns två sätt att börja spela in:

  • Spela in omedelbart. Starta proxy med --record alternativet, till exempel devproxy --record.
  • Spela in ad hoc. Tryck på R medan proxyn körs.

När inspelning är aktiverad, ◉ Recording... visas i proxyutdata.

Om du vill generera en rapport från den inspelade aktiviteten stoppar du inspelningen.

Det finns två sätt att stoppa inspelningen:

  • Avsluta proxy. Tryck på Ctrl + C.
  • Stoppa adhoc. Tryck på S.

Som standard grupperas aktiviteter efter URL. Om du vill gruppera aktivitet efter meddelandetyp använder du alternativet --summary-group-by .

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

Där rapporter skrivs

När du slutar spela in skriver varje aktiverad reporter en fil för varje rapport som skapas av ett rapportinsticksprogram. Dev Proxy skriver filerna till den aktuella arbetskatalogen, som är den mapp som du startade Dev Proxy från. När du startar Dev Proxy i bakgrunden, till exempel i en CI-pipeline, ser du till att du startar den från mappen där du vill att rapporterna ska lagras.

Rapportfiler använder följande namngivningsmönster:

<ReportingPlugin>_<Reporter>.<ext>

Konfigurationen i den här artikeln skapar till exempel en fil med namnet ExecutionSummaryPlugin_MarkdownReporter.md.

Om det redan finns en fil med det namnet skriver Dev Proxy inte över den. I stället lägger den till en tidsstämpel i yyyyMMddHHmmss formatet till filnamnet, till exempel ExecutionSummaryPlugin_MarkdownReporter_20261105103000.md. Dev Proxy loggar namnet på varje rapportfil som den skriver, till exempel:

Writing report ExecutionSummaryPlugin to ExecutionSummaryPlugin_MarkdownReporter.md...

I följande tabell visas de tillägg som varje reporter använder.

Reporter Extension
JsonReporter .json (vissa rapporter använder ett annat tillägg, till exempel .jsonc för UrlDiscoveryPlugin)
MarkdownReporter .md
PlainTextReporter .txt

Anmärkning

All inspelning är lokal. Inga data skickas till Microsoft.

Spela in från skript och CI

I skript och CI/CD-pipelines kan du inte simulera tangenttryckningar för att starta och stoppa inspelningen. Kör i stället Dev Proxy i bakgrunden och kontrollera inspelningen med hjälp av Dev Proxy-API:et. Alla API-begäranden kräver en bearer-token. För att ange token i förväg anger du miljövariabeln DEV_PROXY_API_TOKEN till ett värde på minst 32 tecken innan du startar Dev Proxy.

Den minimala sekvensen är:

  1. Ange DEV_PROXY_API_TOKEN ett slumpmässigt värde på minst 32 tecken.
  2. Starta Dev Proxy i bakgrunden: devproxy --detach --as-system-proxy false -c devproxyrc.json.
  3. Vänta tills GET /proxy lyckas.
  4. Starta inspelningen: POST /proxy med {"recording": true}.
  5. Kör arbetsbelastningen med miljövariablerna HTTP_PROXY och HTTPS_PROXY som pekar på Dev Proxy.
  6. Stoppa inspelning: POST /proxy med hjälp av {"recording": false}. Begäran returneras när rapportgeneratorerna är klara, så rapporterna är klara när den slutförs.
  7. Stäng av Dev Proxy: POST /proxy/stopProxy.

Dev Proxy skriver rapporterna till mappen därifrån du startade den.

#!/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"

I exemplen används standardproxyporten 8000 och API-porten 8897. Ange endast proxymiljövariablerna för arbetsbelastningen så att API-anropen inte går via Dev Proxy. För att kunna fånga upp HTTPS-trafik måste arbetslasten lita på rotcertifikatet för Dev Proxy. Mer information om hur du kör Dev Proxy i pipelines, inklusive hur du litar på certifikatet, se Använd Dev Proxy i CI/CD-scenarier.

Se även