Proxy-API

Important

Sedan v3.3.1 kräver Authorization: Bearer <token> varje Dev Proxy API-begäran huvudet. Begäranden utan giltig token returnerar 401 Unauthorized.

Dev Proxy levereras med ett webb-API som gör att du kan interagera med proxyn programmatiskt. API:et är tillgängligt på den IP-adress och port som anges i proxyinställningarna.

Dev Proxy genererar en unik token för varje instans som körs och lagrar den i en fil som endast är tillgänglig för den användare som startade instansen. Hämta token med eller devproxy statusdevproxy api token. CI När miljövariabeln har angetts använder du devproxy api token eftersom Dev Proxy utelämnar token från status och startutdata.

Om du vill använda en känd token i stället för en genererad, till exempel när ett annat verktyg startar Dev Proxy och anropar dess API, anger DEV_PROXY_API_TOKEN du miljövariabeln innan du startar Dev Proxy eller skickar den med hjälp av --env alternativet . Värdet måste vara minst 32 tecken långt, inte räkna avslutande = utfyllnad och får endast innehålla ASCII-bokstäver, siffror och tecknen -, ., _, ~, +och /, eventuellt följt av = utfyllnad. Dev Proxy trimmar omgivande blanksteg. Om värdet inte är giltigt startar inte Dev Proxy och avslutas inte med ett fel. Dev Proxy lagrar fortfarande token, så devproxy status, devproxy api tokenoch devproxy stop fortsätter att fungera.

Inkludera token i Authorization rubriken:

Authorization: Bearer <token>

Begäranden utan giltig token returnerar 401 Unauthorized. Webbläsarbegäranden måste också komma från ett ursprung som anges i inställningen apiAllowedOrigins . Andra ursprung returnerar 403 Forbidden.

Operations

I följande lista visas tillgängliga API-åtgärder.

GET /proxy

Returnerar en instans av ProxyInfo med information om den dev proxyinstans som körs.

Exempel: Hämta information om den dev proxyinstans som körs för tillfället

Begäran:

GET http://localhost:8897/proxy
Authorization: Bearer <token>

Svar:

200 OK

{
  "recording": false,
  "configFile": "/Users/user/dev-proxy/devproxyrc.json"
}

POST /proxy

Styr den dev proxyinstans som körs just nu. Information om hur du startar och slutar spela in från ett skript eller en CI-pipeline finns i Spela in från skript och CI.

Exempel: starta inspelning

Begäran:

POST http://localhost:8897/proxy
Authorization: Bearer <token>
content-type: application/json

{
  "recording": true
}

Svar:

200 OK

{
  "recording": true,
  "configFile": "/Users/user/dev-proxy/devproxyrc.json"
}

Exempel: stoppa inspelning

Begäran:

POST http://localhost:8897/proxy
Authorization: Bearer <token>
content-type: application/json

{
  "recording": false
}

Svar:

200 OK

{
  "recording": false,
  "configFile": "/Users/user/dev-proxy/devproxyrc.json"
}

Stoppa inspelning och generera rapporter

Att stoppa inspelningen gör mer än att sluta samla in begäranden. När du skickar {"recording": false} medan Dev Proxy spelas in skickar Dev Proxy de inspelade begärandena till alla aktiverade plugin-program i den ordning de anges i konfigurationsfilen. Detta är samma sak som att trycka på s i konsolen där Dev Proxy körs. Under det här steget:

  • Rapport-plugin-program analyserar de registrerade begärandena och skapar rapporter.
  • Reportrar konverterar rapporterna till filer. Varje reporter skriver en fil för varje rapport med namnet <plugin>_<reporter>.<extension>, till exempel ExecutionSummaryPlugin_MarkdownReporter.md. <plugin> är namnet på plugin-instansen som producerade rapporten och <reporter> är namnet på reporterinstansen. Om det redan finns en fil med det namnet lägger reportern till en tidsstämpel, ExecutionSummaryPlugin_MarkdownReporter_20261105114500.mdtill exempel .
  • Generator-plugin-program, som OpenApiSpecGeneratorPlugin, skriver de filer som de genererar.

Dev Proxy skriver dessa filer till den aktuella arbetskatalogen, som är den katalog som du startade Dev Proxy från.

API:et svarar när alla plugin-program har slutfört bearbetningen av de registrerade begärandena. Beroende på vilka plugin-program du använder, till exempel plugin-program som anropar en språkmodell, kan det här steget ta en stund, så se till att HTTP-klienten inte överskrider tidsgränsen för tidigt. När svaret kommer skrivs rapportfilerna till disken.

Dev Proxy loggar även förloppet för bearbetning av registrerade begäranden:

Loggmeddelande Meaning
DONE Alla plugin-program har bearbetat de inspelade begärandena.
No requests to process Ett plugin-program hittade inga registrerade begäranden att analysera.
An error occurred in a plugin Ett plugin-program misslyckades. Dev Proxy fortsätter med nästa plugin-program och loggar DONE när alla plugin-program är klara.

Om Dev Proxy inte spelas in när du skickar {"recording": false}bearbetar Dev Proxy inga begäranden, skriver inga filer och loggar DONEinte .

Tip

Om du slutar använda POST /proxy/stopproxy Dev Proxy när den spelas in bearbetar Dev Proxy även de inspelade begärandena innan den avslutas. Det API:et svarar dock omedelbart, så du måste vänta tills Dev Proxy-processen avslutas för att veta att rapporterna är klara. Om du vill veta exakt när rapporterna är klara slutar du spela in först, väntar på svaret och stoppar sedan Dev Proxy.

Ett fullständigt skript som startar Dev Proxy, styr inspelningen via API:et och väntar på att Dev Proxy ska slutföras finns i Använda Dev Proxy i CI/CD-scenarier.

POST /proxy/jwtToken

Genererar en JSON-webbtoken (JWT).

Begäran:

POST http://localhost:8897/proxy/jwtToken
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "Dev Proxy",
  "audiences": [
    "https://myserver.com"
  ],
  "issuer": "dev-proxy",
  "roles": [
    "admin"
  ],
  "scopes": [
    "Post.Read",
    "Post.Write"
  ],
  "claims": {
    "claim1": "value",
    "claim2": "value"
  },
  "validFor": 60
}

Kommentar

Registrerade anspråk (till exempel iss, sub, aud, exp, nbf, , iat) jtiläggs automatiskt till i token. Om du anger något av dessa anspråk i begäran ignorerar API:et de värden som du anger.

Svar:

200 OK

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6IkRldiBQcm94eSIsInN1YiI6IkRldiBQcm94eSIsImp0aSI6IjkyZjM5YzciLCJzY3AiOlsiUG9zdC5SZWFkIiwiUG9zdC5Xcml0ZSJdLCJyb2xlcyI6ImFkbWluIiwiY2xhaW0xIjoidmFsdWUiLCJjbGFpbTIiOiJ2YWx1ZSIsImF1ZCI6Imh0dHBzOi8vbXlzZXJ2ZXIuY29tIiwibmJmIjoxNzI3MTk4MjgyLCJleHAiOjE3MjcyMDE4ODIsImlhdCI6MTcyNzE5ODI4MiwiaXNzIjoiZGV2LXByb3h5In0.E_Gj9E58OrAh9uHgc-TW8DYfq8YHFrhaUTpKA4yXEIg"
}

GET /proxy/logs

Returnerar utdata från Dev Proxy-loggen. logs Motsvarande kommandot. Den här slutpunkten är endast tillgänglig när Dev Proxy körs i frånkopplat läge. Annars returnerar 404 Not FoundAPI:et .

Frågeparameter Beskrivning Standardvärde
lines Antal rader som ska returneras från slutet av loggen 50
follow När trueströmmar nya loggrader som server-skickade händelser false
since Returnerar endast rader som loggats sedan det angivna datumet och tiden. Använd en varaktighet (till exempel 30s, , 5m1h, 1d) eller ett ISO 8601-datum och tid (till exempel 2026-01-24T14:00:00 eller 2026-01-24T14:00:00Z). Om tidsstämpeln inte innehåller en tidszonsförskjutning använder Dev Proxy den lokala tidszonen. n/a

Parametern since filtrerar loggrader efter deras fullständiga datum och tid, både när loggrader returneras och när de strömmas. Dev Proxy filtrerar varje begäran efter den tidpunkt då den startade, så en begäran som startades före den angivna tiden returneras inte, även om den har slutförts senare.

Som standard returnerar API:et loggraderna som oformaterad text. Om du vill hämta en JSON-matris med loggposter anger du Accept rubriken till application/json. Om du vill strömma loggrader som server skickade händelser anger du Accept rubriken till text/event-stream eller anger follow till true.

Begäran:

GET http://localhost:8897/proxy/logs?lines=10
Authorization: Bearer <token>

Svar:

200 OK
content-type: text/plain

[last 10 lines of the Dev Proxy log]

POST /proxy/mockrequest

Skapar en falsk begäran. Motsvarande att trycka w i konsolen där Dev Proxy körs. API:et svarar när den falska begäran har slutförts.

Begäran:

POST http://localhost:8897/proxy/mockrequest
Authorization: Bearer <token>

Svar:

204 No Content

GET /proxy/rootCertificate?format=crt

Laddar ned den offentliga nyckeln för rotcertifikatet i PEM-format (Privacy Enhanced Mail) som Dev Proxy använder för att dekryptera HTTPS-begäranden. Det här API:et är användbart när du vill lita på rotcertifikatet på värden när du kör Dev Proxy i en Docker-container.

För närvarande är crtdet enda format som stöds . API:et returnerar ett fel med 400 felaktig begäran om du anger något annat format eller inte anger något format alls.

Begäran:

GET http://localhost:8897/proxy/rootCertificate?format=crt
Authorization: Bearer <token>

Svar:

content-type: application/x-x509-ca-cert

-----BEGIN CERTIFICATE-----
[base64 encoded certificate]
-----END CERTIFICATE-----

POST /proxy/stopproxy

Stänger av Dev Proxy på ett korrekt sätt. Om Dev Proxy spelas in stoppas inspelningen och genererar rapporter innan den avslutas. API:et svarar omedelbart innan Dev Proxy avslutas.

Begäran:

POST http://localhost:8897/proxy/stopproxy
Authorization: Bearer <token>

Svar:

202 Accepted

Dev Proxy returneras 202 Accepted så snart den börjar stängas av. Svaret innebär inte att Dev Proxy har avslutats. Under avstängningen: Dev Proxy:

  1. Slutar acceptera nya proxybegäranden. Om Dev Proxy har registrerats som systemproxy återställs de tidigare systemproxyinställningarna. Dev Proxy väntar upp till fem sekunder på att öppna anslutningar ska stängas och stänger sedan eventuella återstående anslutningar.
  2. Stoppar inspelningen, om inspelningen är på och kör plugin-programmet för rapportering på de inspelade begärandena, på samma sätt som när du slutar spela in själv. När plugin-programmet är klart skriver Dev Proxy rapporterna och loggarna DONE.
  3. Tar bort instansinformationen och devproxy statusdevproxy stop visar den inte längre.
  4. Avslutar med slutkod 0.

Dev Proxy tar inte bort rotcertifikatet från det betrodda certifikatarkivet vid avstängning. Om du vill ta bort certifikatet använder du cert remove.

Avstängningen tar vanligtvis några sekunder. Det kan ta längre tid när du rapporterar plugin-program bearbetar en stor inspelning. När avstängningen har startat kan API:et inte längre nås, så avsök inte API:et för att kontrollera om Dev Proxy har avslutats. Använd i stället något av följande alternativ:

  • Vänta tills process-ID (PID) som devproxy --detach skrivs ut avslutas.
  • Kör devproxy status --pid <pid> tills den returnerar slutkoden 1, vilket innebär att instansen inte längre körs. Mer information finns i status.
  • Om du spelade in kontrollerar du Dev Proxy-loggen för meddelandet DONE , som Dev Proxy loggar efter att plugin-programmet för rapportering har slutförts. Ett exempel finns i Använda Dev Proxy i CI/CD-scenarier.

Om du till exempel vill vänta tills en fristående Dev Proxy-instans avslutas i Linux eller macOS:

# DEVPROXY_PID is the PID that devproxy --detach printed
# TOKEN is the API token from devproxy api token
curl -X POST http://localhost:8897/proxy/stopproxy -H "Authorization: Bearer $TOKEN"

while ./devproxy/devproxy status --pid $DEVPROXY_PID > /dev/null 2>&1; do
  sleep 1
done

Undvik att avsluta Dev Proxy-processen med kraft, till exempel med hjälp kill -9av . När du avslutar processen på det här sättet rensar Dev Proxy inte inställningarna för inspelning eller återställning av systemproxy. Om du vill stoppa Dev Proxy från kommandoraden använder du stop, som anropar det här API:et och väntar upp till 10 sekunder innan Dev Proxy avslutas.

Modeller

ProxyInfo

Information om den dev proxy-instans som körs just nu.

Property Type Beskrivning
recording boolean Om proxyn för närvarande registrerar begäranden
configFile string Sökväg till konfigurationsfilen som Dev Proxy använder (skrivskyddad)

JwtOptions

Alternativ för att generera en JWT-token.

Property Type Beskrivning
name string Namnet på användaren som du vill skapa token för
audiences string[] Målgrupperna som du vill skapa token för
issuer string Utfärdaren av token
roles string[] Ett rollanspråk att lägga till i token
scopes string[] Ett omfångsanspråk som ska läggas till i token
claims KeyValuePair Anspråk att lägga till i token
validFor number Varaktigheten (i minuter) för vilken token är giltig
signingKey string Nyckeln som ska användas för att signera token. Måste vara minst 32 tecken långt. Om det inte anges använder du en slumpmässigt genererad nyckel.

JwtInfo

Information om en JWT-token.

Property Type Beskrivning
token string JWT-token

Se även