Proxy API

Important

Od verze 3.3.1 vyžaduje každý požadavek rozhraní DEV Proxy API hlavičku Authorization: Bearer <token> ; požadavky bez platného vrácení 401 Unauthorizedtokenu .

Dev Proxy je součástí webového rozhraní API, které umožňuje programově pracovat s proxy serverem. Rozhraní API je k dispozici na IP adrese a portu zadaném v nastavení proxy serveru.

Dev Proxy vygeneruje jedinečný token pro každou spuštěnou instanci a uloží ho do souboru, který je přístupný jenom uživateli, který instanci spustil. Získání tokenu pomocí devproxy status nebo devproxy api token. CI Pokud je proměnná prostředí nastavená, použijte devproxy api token ji, protože dev Proxy vynechá token ze stavu a výstupu po spuštění.

Pokud chcete místo vygenerovaného tokenu použít známý token, například když jiný nástroj spustí Dev Proxy a zavolá jeho rozhraní API, nastavte DEV_PROXY_API_TOKEN proměnnou prostředí před spuštěním dev proxy serveru nebo ji předejte pomocí --env této možnosti. Hodnota musí mít délku minimálně 32 znaků, nesmí počítat koncové = odsazení a může obsahovat pouze písmena ASCII, číslice a znaky -, , ., , _~, +a /volitelně následované odsazením=. Dev Proxy oříznou okolní prázdné znaky. Pokud hodnota není platná, dev proxy se nespustí a ukončí s chybou. Dev Proxy stále ukládá token, takže devproxy statusdevproxy api token, a devproxy stop pokračujte v práci.

Zahrňte token do hlavičky Authorization :

Authorization: Bearer <token>

Požadavky bez platného vrácení 401 Unauthorizedtokenu . Požadavky prohlížeče musí také pocházet z původu apiAllowedOrigins uvedeného v nastavení. Jiné původy vrátí 403 Forbidden.

Operace

Následující seznam ukazuje dostupné operace rozhraní API.

GET /proxy

Vrátí instanci ProxyInfo s informacemi o aktuálně spuštěné instanci dev proxy serveru.

Příklad: Získání informací o aktuálně spuštěné instanci dev proxy serveru

Požadavek:

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

Odpověď:

200 OK

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

POST /proxy

Řídí aktuálně spuštěnou instanci dev proxy serveru. Pokud chcete spustit a zastavit nahrávání ze skriptu nebo kanálu CI, přečtěte si téma Záznam ze skriptů a CI.

Příklad: spuštění nahrávání

Požadavek:

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

{
  "recording": true
}

Odpověď:

200 OK

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

Příklad: zastavení nahrávání

Požadavek:

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

{
  "recording": false
}

Odpověď:

200 OK

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

Zastavení nahrávání a generování sestav

Zastavení záznamu znamená více než zastavení zachytávání požadavků. Když odesíláte, když dev proxy nahráváte {"recording": false} , dev proxy předá zaznamenané požadavky všem povoleným modulům plug-in v pořadí, v jakém jsou uvedené v konfiguračním souboru. Je to stejné jako stisknutí klávesy v konzole, ve které běží dev proxy server. Během tohoto kroku:

  • Moduly plug-in pro vytváření sestav analyzují zaznamenané požadavky a vytvářejí sestavy.
  • Zpravodajé převedou sestavy na soubory. Každý reportér zapíše jeden soubor pro každou sestavu s názvem <plugin>_<reporter>.<extension>, ExecutionSummaryPlugin_MarkdownReporter.mdnapříklad . <plugin> je název instance modulu plug-in, která vytvořila sestavu, a <reporter> je název instance reporteru. Pokud soubor s tímto názvem již existuje, sestava připojí časové razítko, ExecutionSummaryPlugin_MarkdownReporter_20261105114500.mdnapříklad .
  • Moduly plug-in generátoru, jako je například OpenApiSpecGeneratorPlugin, zapisují soubory, které vygenerují.

Dev Proxy zapisuje tyto soubory do aktuálního pracovního adresáře, což je adresář, ze kterého jste spustili Dev Proxy.

Rozhraní API reaguje po dokončení zpracování zaznamenaných požadavků všemi moduly plug-in. V závislosti na modulech plug-in, které používáte, například moduly plug-in, které volají jazykový model, může tento krok chvíli trvat, takže se ujistěte, že váš klient HTTP nevyprší příliš brzy. Po přijetí odpovědi se soubory sestavy zapíšou na disk.

Dev Proxy také zaznamená průběh zpracování zaznamenaných požadavků:

Zpráva protokolu Meaning
DONE Všechny moduly plug-in dokončily zpracování zaznamenaných požadavků.
No requests to process Modul plug-in nenalezl žádné zaznamenané žádosti o analýzu.
An error occurred in a plugin Modul plug-in se nezdařil. Dev Proxy pokračuje dalším modulem plug-in a protokoly DONE po dokončení všech modulů plug-in.

Pokud dev proxy server při odesílání {"recording": false}nenahrá, dev proxy nezpracovává žádné požadavky, nezapisuje žádné soubory a protokoluje DONE.

Tip

Pokud během nahrávání zastavíte dev proxy server POST /proxy/stopproxy , Dev Proxy zpracuje zaznamenané požadavky i před ukončením. Toto rozhraní API ale reaguje okamžitě, takže musíte počkat, až se proces dev proxy serveru ukončí, abyste věděli, že jsou sestavy připravené. Pokud chcete přesně vědět, kdy jsou sestavy připravené, nejprve zastavte nahrávání, počkejte na odpověď a pak zastavte Dev Proxy.

Úplný skript, který spustí vývojový proxy server, řídí záznam prostřednictvím rozhraní API a čeká na dokončení dev proxy serveru, najdete v tématu Použití dev proxy ve scénářích CI/CD.

POST /proxy/jwtToken

Vygeneruje webový token JSON (JWT).

Požadavek:

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
}

Poznámka:

Registrované deklarace identity (například iss, , sub, audexpnbf, , iat, ), jtise automaticky přidají do tokenu. Pokud v požadavku zadáte některou z těchto deklarací identity, rozhraní API ignoruje zadané hodnoty.

Odpověď:

200 OK

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

GET /proxy/logs

Vrátí výstup protokolu dev proxy serveru. Ekvivalent příkazu logs Tento koncový bod je k dispozici pouze v případě, že dev proxy běží v odpojeném režimu. V opačném případě rozhraní API vrátí 404 Not Found.

Parametr dotazu Popis Výchozí
lines Počet řádků, které se mají vrátit z konce protokolu 50
follow Když truestreamuje nové řádky protokolu jako události odesílané serverem false
since Vrátí pouze řádky zaprotokolované od zadaného data a času. Použijte dobu trvání (například 30s, , 5m, 1h) 1dnebo datum a čas ISO 8601 (například 2026-01-24T14:00:00 ).2026-01-24T14:00:00Z Pokud časové razítko neobsahuje posun časového pásma, dev proxy používá místní časové pásmo. n/a

Parametr filtruje řádky protokolu podle úplného data a času, a to since jak při vracení řádků protokolu, tak při jejich streamování. Dev Proxy filtruje každý požadavek podle času, kdy se spustil, takže požadavek, který se spustil před uplynutím zadaného času, se nevrátí, i když se dokončí později.

Ve výchozím nastavení vrátí rozhraní API řádky protokolu jako prostý text. Pokud chcete získat pole JSON s položkami protokolu, nastavte hlavičku Accept na application/json. Pokud chcete streamovat řádky protokolu jako události odesílané serverem, nastavte hlavičku Accept na text/event-stream hodnotu nebo nastavte follow na truehodnotu .

Požadavek:

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

Odpověď:

200 OK
content-type: text/plain

[last 10 lines of the Dev Proxy log]

POST /proxy/mockrequest

Vyvolá požadavek na napodobení. Ekvivalent stisknutí klávesy w v konzole, ve které běží dev proxy server. Rozhraní API odpoví po dokončení napodobení požadavku.

Požadavek:

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

Odpověď:

204 No Content

GET /proxy/rootCertificate?format=crt

Stáhne veřejný klíč kořenového certifikátu ve formátu PEM (Privacy Enhanced Mail), který dev Proxy používá k dešifrování požadavků HTTPS. Toto rozhraní API je užitečné, když chcete důvěřovat kořenovému certifikátu na hostiteli při spouštění dev proxy v kontejneru Dockeru.

V tuto chvíli je crtjediným podporovaným formátem . Rozhraní API vrátí chybu 400 Chybný požadavek, pokud zadáte jakýkoli jiný formát nebo vůbec nezadáte formát.

Požadavek:

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

Odpověď:

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

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

POST /proxy/stopproxy

Řádně vypne dev proxy server. Pokud se dev proxy server nahrává, zastaví nahrávání a vygeneruje sestavy před ukončením. Rozhraní API reaguje okamžitě, než se vývoj proxy ukončí.

Požadavek:

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

Odpověď:

202 Accepted

Dev Proxy se vrátí 202 Accepted hned, jak se spustí vypnutí. Odpověď neznamená, že se dev proxy server ukončil. Během vypnutí dev proxy:

  1. Přestane přijímat nové požadavky proxy serveru. Pokud je dev Proxy zaregistrovaný jako systémový proxy server, obnoví předchozí nastavení proxy serveru systému. Dev Proxy čeká až pět sekund, než se otevřená připojení zavře, a poté zavře všechna zbývající připojení.
  2. Zastaví nahrávání, pokud je nahrávání zapnuté, a spustí na zaznamenaných žádostech moduly plug-in pro hlášení, stejně jako když zastavíte nahrávání sami. Po dokončení modulů plug-in zapíše dev proxy sestavy a protokoly DONE.
  3. Odebere informace o instanci, takže devproxy status už devproxy stop je nevypisuje.
  4. Ukončí s ukončovacím kódem 0.

Dev Proxy neodebere kořenový certifikát z úložiště důvěryhodných certifikátů při vypnutí. Certifikát odeberete odebráním certifikátu.

Vypnutí obvykle trvá několik sekund. Generování sestav modulů plug-in může trvat delší dobu, než se vytvoří velký záznam. Jakmile se spustí vypnutí, rozhraní API už není dostupné, proto se necyklické dotazování rozhraní API na kontrolu, jestli se dev proxy server ukončil. Místo toho použijte jednu z těchto možností:

  • Počkejte, až se ID procesu (PID), které devproxy --detach se vytiskne, ukončí.
  • Spusťte devproxy status --pid <pid> , dokud nevrátí ukončovací kód 1, což znamená, že instance již není spuštěna. Další informace najdete v tématu o stavu.
  • Pokud jste nahrávali, zkontrolujte zprávu v protokolu DONE dev proxy serveru, které protokoly Dev Proxy po dokončení modulů plug-in pro generování sestav. Příklad najdete v tématu Použití dev proxy ve scénářích CI/CD.

Pokud například chcete počkat, až se odpojená instance dev proxy serveru ukončí v Linuxu nebo 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

Vyhněte se vynucenému ukončení procesu dev proxy, například pomocí .kill -9 Když proces ukončíte tímto způsobem, Dev Proxy nevyprázdní nastavení záznamu ani obnovení systémového proxy serveru. Pokud chcete vývojový proxy server zastavit z příkazového řádku, použijte příkaz stop, který volá toto rozhraní API a čeká až 10 sekund, než se dev proxy server ukončí.

Modely

ProxyInfo

Informace o aktuálně spuštěné instanci dev proxy.

Vlastnost Typ Popis
recording boolean Jestli proxy server aktuálně nahrává požadavky
configFile string Cesta ke konfiguračnímu souboru, který dev Proxy používá (jen pro čtení)

JwtOptions

Možnosti generování tokenu JWT

Vlastnost Typ Popis
name string Jméno uživatele pro vytvoření tokenu pro
audiences string[] Cílové skupiny pro vytvoření tokenu pro
issuer string Vystavitel tokenu
roles string[] Deklarace identity role, která se má přidat do tokenu
scopes string[] Deklarace oboru, která se má přidat k tokenu
claims KeyValuePair Deklarace identity, které se mají přidat do tokenu
validFor number Doba trvání (v minutách), pro kterou je token platný
signingKey string Klíč, který se má použít k podepsání tokenu. Musí mít délku minimálně 32 znaků. Pokud není zadaný, použije náhodně vygenerovaný klíč.

JwtInfo

Informace o tokenu JWT

Vlastnost Typ Popis
token string Token JWT

Viz také