Simulované odpovědi
Použití Dev Proxy je nejjednodušší způsob, jak simulovat rozhraní API. Bez ohledu na to, jestli vytváříte front-end a rozhraní API ještě není připravené, musíte svůj back-end integrovat s externí službou nebo chcete otestovat aplikaci s různými odpověďmi, dev Proxy vám může pomoct simulovat odpovědi rozhraní API. Co je skvělé pro použití Dev Proxy, je to, že nevyžaduje žádné změny kódu vaší aplikace. Definujete napodobení odpovědí pro jakékoli rozhraní API, se kterým vaše aplikace komunikuje, a Dev Proxy zachytí požadavky a odpoví na vámi definované napodobené odpovědi.
Pokud chcete napodobení odpovědí rozhraní API, musíte udělat dvě věci:
- Vytvořte soubor s napodobenými odpověďmi.
- Nakonfigurujte Dev Proxy tak, aby používal napodobené odpovědi.
Spropitné
Pokud používáte Visual Studio Code, zvažte instalaci rozšíření Dev Proxy Toolkit. Výrazně zjednodušuje práci s konfiguračními soubory dev proxy.
Vytvoření souboru s napodobenými odpověďmi
Dev Proxy napodobuje odpovědi rozhraní API s pomocí MockResponsePlugin
. Modul plug-in umožňuje definovat sadu napodobených odpovědí. Definujete napodobení v samostatný soubor. Následující ukázka kódu demonstruje jednoduchou simulovanou odpověď pro požadavek GET
k https://jsonplaceholder.typicode.com/posts/1
.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.0/mockresponseplugin.schema.json",
"mocks": [
{
"request": {
"url": "https://jsonplaceholder.typicode.com/posts/1",
"method": "GET"
},
"response": {
"statusCode": 200,
"body": {
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
},
"headers": [
{
"name": "Date",
"value": "Wed, 19 Feb 2025 09:03:37 GMT"
},
{
"name": "Content-Type",
"value": "application/json; charset=utf-8"
},
{
"name": "Content-Length",
"value": "292"
},
// [...] trimmed for brevity
]
}
}
]
}
Spropitné
Místo ručního vytvoření mock souboru můžete použít MockGeneratorPlugin
k jeho vygenerování na základě zachycených požadavků.
Priorita objednávky
Dev Proxy odpovídá napodobení v pořadí, ve kterém je definujete v souboru s napodobeninami. Pokud definujete více odpovědí se stejnou adresou URL a metodou, dev Proxy použije první odpovídající odpověď.
Pokud používáte následující konfiguraci, proxy odpovídá na všechny GET
požadavky k https://graph.microsoft.com/v1.0/me/photo
s 500 Internal Server Error
.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.0/mockresponseplugin.schema.json",
"mocks": [
{
"request": {
"url": "https://graph.microsoft.com/v1.0/me/photo",
"method": "GET"
},
"response": {
"statusCode": 500
}
},
{
"request": {
"url": "https://graph.microsoft.com/v1.0/me/photo",
"method": "GET"
},
"response": {
"statusCode": 404
}
}
]
}
Podpora zástupných znaků
Dev Proxy podporuje použití zástupných znaků ve vlastnosti URL. Znak hvězdičky (*
) můžete použít ke spárování libovolné řady znaků v adrese URL.
Když použijete následující konfiguraci, dev proxy odpoví na všechny požadavky, aby získal profil libovolného uživatele se stejnou odpovědí.
{
"request": {
"url": "https://graph.microsoft.com/v1.0/users/*"
},
"response": {
"body": {
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"businessPhones": ["+1 425 555 0109"],
"displayName": "Adele Vance",
"givenName": "Adele",
"jobTitle": "Product Marketing Manager",
"mail": "AdeleV@M365x214355.onmicrosoft.com",
"mobilePhone": null,
"officeLocation": "18/2111",
"preferredLanguage": "en-US",
"surname": "Vance",
"userPrincipalName": "AdeleV@M365x214355.onmicrosoft.com",
"id": "87d349ed-44d7-43e1-9a83-5f2406dee5bd"
}
}
}
Když použijete následující konfiguraci, dev proxy vrátí stejnou image z disku, když požádáte o získání binárního souboru fotky libovolného uživatele.
{
"request": {
"url": "https://graph.microsoft.com/v1.0/users/*/photo/$value"
},
"response": {
"body": "@picture.jpg",
"headers": [
{
"name": "content-type",
"value": "image/jpeg"
}
]
}
}
Když použijete následující konfiguraci, dev proxy vrátí stejnou odpověď, když požádáte o získání profilu aktuálního uživatele s libovolným parametrem řetězce dotazu.
{
"request": {
"url": "https://graph.microsoft.com/v1.0/me?*"
},
"response": {
"body": {
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"businessPhones": [
"+1 412 555 0109"
],
"displayName": "Megan Bowen",
"givenName": "Megan",
"jobTitle": "Auditor",
"mail": "MeganB@M365x214355.onmicrosoft.com",
"mobilePhone": null,
"officeLocation": "12/1110",
"preferredLanguage": "en-US",
"surname": "Bowen",
"userPrincipalName": "MeganB@M365x214355.onmicrosoft.com",
"id": "48d31887-5fad-4d73-a9f5-3c356e68a038"
}
}
},
Odpověď s obsahem souboru
Pokud chcete, aby byl soubor napodobení čistý a uspořádaný, můžete obsah odpovědi uložit do samostatného souboru a odkazovat na něj v souboru napodobení. Pokud chcete instruovat Dev Proxy, aby načetl tělo testovací odpovědi ze souboru, nastavte vlastnost body
na @
a poté zadejte cestu k souboru vzhledem k souboru napodobenin.
Například následující konfigurace napodobení odpovědi dává dev proxy pokyn, aby reagoval na všechny požadavky na https://graph.microsoft.com/v1.0/me
s obsahem souboru response.json
umístěným ve stejné složce jako soubor napodobení.
{
"request": {
"url": "https://graph.microsoft.com/v1.0/me",
"method": "GET"
},
"response": {
"body": "@response.json",
"headers": [
{
"name": "content-type",
"value": "application/json; odata.metadata=minimal"
}
]
}
}
Použití tokenu @
funguje s textovými a binárními soubory.
Konfigurace dev proxy serveru pro použití napodobených odpovědí
Po vytvoření souboru napodobení je potřeba nakonfigurovat Dev Proxy tak, aby používal odpovědi na napodobení. Pokud chcete nakonfigurovat Dev Proxy na napodobení odpovědí, přidejte MockResponsePlugin
do seznamu modulů plug-in v souboru devproxyrc.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.0/rc.schema.json",
"plugins": [
{
"name": "MockResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
"configSection": "mockResponsePlugin"
}
],
"urlsToWatch": [
"https://jsonplaceholder.typicode.com/*"
],
"mockResponsePlugin": {
"mocksFile": "mocks.json"
},
"logLevel": "information",
"newVersionNotification": "stable",
"showSkipMessages": true
}
Nejprve přidáte MockResponsePlugin
do seznamu modulů plug-in. Uvádíte odkaz na konfigurační sekci, kde zadáte cestu k souboru s testovacími mocky.
Když spustíte Dev Proxy, přečte soubor s mocky a použije simulované odpovědi na požadavky, které odpovídají definovaným mockům.
Podpora neprověřených žádostí
Dev Proxy podporuje vyvolání chyby v případě, že proxy zachytí neockovaný požadavek. Schopnost neúspěšných požadavků je užitečná pro identifikaci požadavků, které jste v souboru napodobení vynechali.
Pokud chcete tuto funkci povolit, přidejte a povolte nastavení blockUnmockedRequests
do konfigurační sekce MockResponsePlugin v souboru devproxyrc.
{
"mocksPlugin": {
"mocksFile": "mocks.json",
"blockUnmockedRequests": true
}
}
Když Dev Proxy zachytí požadavek, který nemůže napodobenit, vrátí odpověď 502 Bad Gateway
.
Další krok
Přečtěte si další informace o mockResponsePlugin.
Vzorky
Projděte si také související ukázky dev proxy serveru: