Proxy API

Important

A 3.3.1-es verzió óta minden Dev Proxy API-kéréshez szükség van a fejlécre; érvényes Authorization: Bearer <token> jogkivonattal 401 Unauthorizednem rendelkező kérések.

A Dev Proxy egy webes API-val rendelkezik, amely lehetővé teszi a proxy programozott módon történő használatát. Az API a proxybeállításokban megadott IP-címen és porton érhető el.

A Dev Proxy minden futó példányhoz létrehoz egy egyedi jogkivonatot, és egy olyan fájlban tárolja, amely csak a példányt létrehozó felhasználó számára érhető el. A jogkivonat lekérése a következővel devproxy status : vagy devproxy api token. Ha a CI környezeti változó be van állítva, használja devproxy api token , mert a Dev Proxy kihagyja a jogkivonatot az állapotból és az indítási kimenetből.

Ha egy ismert jogkivonatot szeretne használni a létrehozott helyett, például amikor egy másik eszköz elindítja a Dev Proxyt, és meghívja annak API-ját, állítsa be a DEV_PROXY_API_TOKEN környezeti változót, mielőtt elindítja a Dev Proxyt, vagy átadja azt a --env beállítással. Az értéknek legalább 32 karakter hosszúnak kell lennie, nem számítva = a záró párnázást, és csak ASCII-betűket, számjegyeket és a karaktereket -, ., _, ~, +és /, opcionálisan a kitöltést = követve tartalmazhat. A dev proxy levágja a térközt. Ha az érték nem érvényes, a Fejlesztői proxy nem indul el, és hibaüzenet jelenik meg. A dev proxy továbbra is tárolja a jogkivonatot, így devproxy statusdevproxy api token, és devproxy stop továbbra is működik.

Adja meg a jogkivonatot a Authorization fejlécben:

Authorization: Bearer <token>

Érvényes jogkivonattal nem rendelkező kérések.401 Unauthorized A böngészőkéréseknek a beállításban apiAllowedOrigins felsorolt forrásból is származnia kell. Más források is visszatérnek 403 Forbidden.

Üzemeltetés

Az alábbi lista az elérhető API-műveleteket jeleníti meg.

GET /proxy

Egy példányt ProxyInfo ad vissza, amely az aktuálisan futó fejlesztői proxypéldányra vonatkozó információkat tartalmazza.

Példa: Információk lekérése az aktuálisan futó fejlesztői proxypéldányról

Kérés:

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

Válasz:

200 OK

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

POST /proxy

A jelenleg futó dev proxypéldányt szabályozza. Ha szkriptből vagy CI-folyamatból szeretné elindítani és leállítani a felvételt, tekintse meg a szkriptekből és a CI-ből származó rekordot.

Példa: felvétel indítása

Kérés:

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

{
  "recording": true
}

Válasz:

200 OK

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

Példa: rögzítés leállítása

Kérés:

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

{
  "recording": false
}

Válasz:

200 OK

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

Jelentések rögzítésének és létrehozásának leállítása

A rögzítés leállítása több, mint a kérések rögzítése. Amikor a Dev Proxy rögzítése közben küld, {"recording": false} a Dev Proxy átadja a rögzített kéréseket az összes engedélyezett beépülő modulnak, a konfigurációs fájlban felsorolt sorrendben. Ez ugyanaz, mint az s billentyű lenyomása azon a konzolon, amelyen a Dev Proxy fut. Ebben a lépésben:

  • A jelentéskészítési beépülő modulok elemzik a rögzített kéréseket, és jelentéseket készítenek.
  • A riporterek fájlokká alakítják a jelentéseket. Minden riporter egy-egy fájlt ír minden jelentéshez, például ExecutionSummaryPlugin_MarkdownReporter.md.<plugin>_<reporter>.<extension> <plugin> a jelentést előállító beépülő modulpéldány neve, és <reporter> a jelentéskészítő példány neve. Ha már létezik ilyen nevű fájl, a riporter hozzáfűz egy időbélyeget, például ExecutionSummaryPlugin_MarkdownReporter_20261105114500.md: .
  • Generátor beépülő modulok, például a OpenApiSpecGeneratorPluginlétrehozott fájlok írása.

A Dev Proxy ezeket a fájlokat az aktuális munkakönyvtárába írja, amelyből a Dev Proxyt elindította.

Az API akkor válaszol, ha az összes beépülő modul befejezi a rögzített kérések feldolgozását. Attól függően, hogy milyen beépülő modulokat használ, például a nyelvi modellt hívó beépülő modulokat, ez a lépés eltarthat egy ideig, ezért győződjön meg arról, hogy a HTTP-ügyfél nem időz túl korán. Amikor a válasz megérkezik, a jelentésfájlokat a rendszer lemezre írja.

A Dev Proxy a rögzített kérések feldolgozásának folyamatát is naplózza:

Naplóüzenet Meaning
DONE Minden beépülő modul befejezte a rögzített kérések feldolgozását.
No requests to process A beépülő modul nem talált elemezni kívánt rögzített kéréseket.
An error occurred in a plugin Egy beépülő modul nem sikerült. A fejlesztői proxy a következő beépülő modullal folytatódik, és naplókat naplóz DONE , amikor az összes beépülő modul befejeződik.

Ha a Dev Proxy nem rögzíti a küldéskor {"recording": false}, a Dev Proxy nem dolgoz fel kéréseket, nem ír fájlokat, és nem naplóz DONE.

Tip

Ha leállítja a Dev Proxy használatát POST /proxy/stopproxy a rögzítés közben, a Dev Proxy a rögzített kéréseket is feldolgozza, mielőtt kilép. Az API azonban azonnal válaszol, ezért meg kell várnia, amíg a Fejlesztői proxy folyamat kilép, hogy megtudja, a jelentések készen állnak. Ha tudni szeretné, hogy mikor állnak készen a jelentések, először állítsa le a felvételt, várja meg a választ, majd állítsa le a Dev Proxyt.

A Dev Proxyt elindító, az API-n keresztüli rögzítést vezérlő és a Dev Proxy befejezésére váró teljes szkriptért tekintse meg a Dev Proxy használata CI/CD-forgatókönyvekben című témakört.

POST /proxy/jwtToken

JSON webes jogkivonatot (JWT) hoz létre.

Kérés:

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
}

Feljegyzés

A regisztrált jogcímek (például , iss, subaud, exp, nbf, ) iatjtiautomatikusan hozzáadódnak a jogkivonathoz. Ha a kérelemben bármelyik jogcímet megadja, az API figyelmen kívül hagyja a megadott értékeket.

Válasz:

200 OK

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

GET /proxy/logs

A Fejlesztői proxy naplójának kimenetét adja vissza. A parancs megfelelője logs . Ez a végpont csak akkor érhető el, ha a dev proxy leválasztásos módban fut. Ellenkező esetben az API ad vissza 404 Not Found.

Lekérdezési paraméter Leírás Alapértelmezett
lines A napló végétől visszaküldött sorok száma 50
follow Amikor trueaz új naplósorokat kiszolgáló által küldött eseményként streameli false
since Csak a megadott dátum és idő óta naplózott sorokat adja vissza. Használjon időtartamot (például 30s, 5m, 1h, ) 1dvagy ISO 8601 dátumot és időt (például 2026-01-24T14:00:00 vagy 2026-01-24T14:00:00Z). Ha az időbélyeg nem tartalmaz időzóna-eltolást, a Dev Proxy a helyi időzónát használja. n/a

A since paraméter a naplósorokat a teljes dátum és idő alapján szűri, mind a naplósorok visszaadásakor, mind a streameléskor. A fejlesztői proxy az egyes kéréseket az indításkor szűri, így a megadott időpont előtt indított kérések nem lesznek visszaadva, még akkor sem, ha később fejeződött be.

Alapértelmezés szerint az API egyszerű szövegként adja vissza a naplósorokat. A naplóbejegyzések JSON-tömbjének lekéréséhez állítsa a fejlécet a Accept következőre application/json: . Ha kiszolgáló által küldött eseményként szeretné streamelni a naplósorokat, állítsa a Accept fejlécet a következőre text/event-stream vagy állítsa be follow a következőre true: .

Kérés:

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

Válasz:

200 OK
content-type: text/plain

[last 10 lines of the Dev Proxy log]

POST /proxy/mockrequest

Modellkérést hoz létre. Egyenértékű a W billentyű lenyomásával azon a konzolon, amelyen a Dev Proxy fut. Az API a modellkérelem befejeződése után válaszol.

Kérés:

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

Válasz:

204 No Content

GET /proxy/rootCertificate?format=crt

Letölti a főtanúsítvány nyilvános kulcsát PEM (Privacy Enhanced Mail) formátumban, amelyet a Dev Proxy a HTTPS-kérések visszafejtéséhez használ. Ez az API akkor hasznos, ha megbízhatónak szeretné minősíteni a főtanúsítványt a gazdagépen, miközben Dev Proxyt futtat egy Docker-tárolóban.

Jelenleg az egyetlen támogatott formátum a crt. Az API 400-es hibás kérési hibát ad vissza, ha bármilyen más formátumot ad meg, vagy egyáltalán nem ad meg formátumot.

Kérés:

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

Válasz:

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

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

POST /proxy/stopproxy

Kecsesen leállítja a Dev Proxyt. Ha a Dev Proxy felvételt készít, leállítja a rögzítést, és jelentéseket hoz létre , mielőtt kilép. Az API azonnal válaszol, mielőtt a Dev Proxy leáll.

Kérés:

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

Válasz:

202 Accepted

A dev proxy azonnal visszatér 202 Accepted , amint elkezd leállni. A válasz nem jelenti azt, hogy a Dev Proxy kilépett. A leállítás során a Dev Proxy:

  1. Leállítja az új proxykérések fogadását. Ha a Dev Proxy rendszerproxyként van regisztrálva, visszaállítja az előző rendszerproxy-beállításokat. A fejlesztői proxy legfeljebb öt másodpercet vár a nyitott kapcsolatok bezárásáig, majd bezárja a fennmaradó kapcsolatokat.
  2. Leállítja a rögzítést, ha a rögzítés be van kapcsolva, és a rögzített kéréseken futtatja a jelentéskészítési beépülő modulokat, ugyanúgy, mint amikor leállítja a felvételt. Amikor a beépülő modulok befejeződnek, a Dev Proxy megírja a jelentéseket és a naplókat DONE.
  3. Eltávolítja a példány adatait, így devproxy statusdevproxy stop többé nem listázhatja.
  4. Kilépés kilépési kóddal 0.

A fejlesztői proxy nem távolítja el a főtanúsítványt a megbízható tanúsítványtárolóból a leállításkor. A tanúsítvány eltávolításához használja a tanúsítvány eltávolítása parancsot.

A leállítás általában néhány másodpercet vesz igénybe. Hosszabb időt is igénybe vehet, ha a beépülő modulok nagy méretű felvételt dolgoznak fel. A leállítás indítása után az API már nem érhető el, ezért ne kérdezze le az API-t, hogy ellenőrizze, hogy a Dev Proxy kilépett-e. Ehelyett használja az alábbi lehetőségek egyikét:

  • Várja meg, amíg devproxy --detach a kinyomtatott folyamatazonosító (PID) kilép.
  • Futtassa devproxy status --pid <pid> , amíg vissza nem adja a kilépési kódot 1, ami azt jelenti, hogy a példány már nem fut. További információ: állapot.
  • Ha rögzítést végzett, ellenőrizze a Dev Proxy naplójában az üzenetet, amelyet a DONE Dev Proxy naplóz a jelentéskészítési beépülő modulok befejezése után. Példa: Dev Proxy használata CI/CD-forgatókönyvekben.

Várjon például arra, hogy egy leválasztott Dev Proxy-példány kilépjen Linux vagy macOS rendszeren:

# 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

Kerülje a Dev Proxy folyamat kényszerítő befejezését, például a használatával kill -9. Ha így fejezi be a folyamatot, a Dev Proxy nem üríti ki a rögzítési vagy visszaállítási rendszerproxy beállításait. Ha le szeretné állítani a Dev Proxyt a parancssorból, használja a stop parancsot, amely meghívja ezt az API-t, és akár 10 másodpercet is vár, amíg a Dev Proxy kilép.

Modellek

ProxyInfo

Információk a jelenleg futó Dev Proxy-példányról.

Tulajdonság Típus Leírás
recording boolean Azt jelzi, hogy a proxy jelenleg rögzíti-e a kéréseket
configFile string A Dev Proxy által használt konfigurációs fájl elérési útja (írásvédett)

JwtOptions

JWT-jogkivonat létrehozásának lehetőségei.

Tulajdonság Típus Leírás
name string A jogkivonat létrehozásához használt felhasználó neve
audiences string[] A jogkivonat létrehozásához szükséges célközönségek
issuer string A jogkivonat kiállítója
roles string[] A jogkivonathoz hozzáadni kívánt szerepkör-jogcím
scopes string[] A jogkivonathoz hozzáadni kívánt hatókör-jogcím
claims KeyValuePair A jogkivonathoz hozzáadni kívánt jogcímek
validFor number Az időtartam (percben), amelyre a jogkivonat érvényes
signingKey string A jogkivonat aláírásához használandó kulcs. Legalább 32 karakter hosszúnak kell lennie. Ha nincs megadva, véletlenszerűen létrehozott kulcsot használ.

JwtInfo

Információ egy JWT-jogkivonatról.

Tulajdonság Típus Leírás
token string A JWT-jogkivonat

Lásd még