Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Simuluje odpovědi.
Definice instance modulu plug-in
{
"name": "MockResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mocksPlugin"
}
Příklad konfigurace
{
"mocksPlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.schema.json",
"mocksFile": "mocks.json"
}
}
Vlastnosti konfigurace
| Vlastnictví | Popis | Výchozí |
|---|---|---|
mocksFile |
Cesta k souboru obsahujícímu napodobené odpovědi | mocks.json |
blockUnmockedRequests |
Vrácení 502 Bad Gateway odpovědi pro požadavky, které nejsou napodobené |
false |
Možnosti příkazového řádku
| Název | Popis | Výchozí |
|---|---|---|
-n, --no-mocks |
Zákaz načítání napodobených požadavků | false |
--mocks-file |
Cesta k souboru obsahujícímu napodobené odpovědi | - |
Příklady souborů Napodobení
Následuje příklad napodobení objektů.
Odpovědět textem
Odpověď na požadavek s odpovědí 200 OK a textem JSON.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"request": {
"url": "https://graph.microsoft.com/v1.0/me",
"method": "GET"
},
"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"
},
"headers": [
{
"name": "content-type",
"value": "application/json; odata.metadata=minimal"
}
]
}
}
]
}
Reakce s chybou
Odpovězte na žádost s odpovědí 404 Nenalezena.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"request": {
"url": "https://graph.microsoft.com/v1.0/me/photo",
"method": "GET"
},
"response": {
"statusCode": 404
}
}
]
}
Odpověď s binárními daty
Odpovězte na žádost pomocí binární image načtené ze souboru na disku.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"request": {
"url": "https://graph.microsoft.com/v1.0/users/*/photo/$value",
"method": "GET"
},
"response": {
"body": "@picture.jpg",
"headers": [
{
"name": "content-type",
"value": "image/jpeg"
}
]
}
}
]
}
Odpovědět na nth žádost
Odpovězte na žádost až po druhém zavolání.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"request": {
"url": "https://graph.microsoft.com/v1.0/external/connections/*/operations/*",
"method": "GET",
"nth": 2
},
"response": {
"statusCode": 200,
"body": {
"id": "1.neu.0278337E599FC8DBF5607ED12CF463E4.6410CCF8F6DB8758539FB58EB56BF8DC",
"status": "completed",
"error": null
}
}
}
]
}
Odpověď odpovídající textu požadavku
Odpovězte na požadavek, který obsahuje konkrétní řetězec v textu.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"request": {
"url": "https://login.microsoftonline.com/fa15d692-e9c7-4460-a743-29f29522229/oauth2/v2.0/token",
"method": "POST",
"bodyFragment": "scope=https%3A%2F%2Fapi.contoso.com%2FDocuments.Read"
},
"response": {
"headers": [
{
"name": "Content-Type",
"value": "application/json; charset=utf-8"
}
],
"body": {
"token_type": "Bearer",
"expires_in": 3599,
"ext_expires_in": 3599,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSU..."
}
}
}
]
}
Zrcadlení dat požadavků v odpovědi
Reagujte na data, která zrcadlí hodnoty z textu požadavku pomocí @request.body.* zástupných symbolů.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.2.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"request": {
"url": "https://graph.microsoft.com/v1.0/users",
"method": "POST"
},
"response": {
"statusCode": 201,
"body": {
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"id": "12345678-1234-1234-1234-123456789abc",
"businessPhones": "@request.body.businessPhones",
"displayName": "@request.body.displayName",
"givenName": "@request.body.givenName",
"jobTitle": "@request.body.jobTitle",
"mail": "@request.body.mail",
"userPrincipalName": "@request.body.userPrincipalName",
"accountEnabled": "@request.body.accountEnabled",
"createdDateTime": "2024-01-15T10:30:00Z"
},
"headers": [
{
"name": "Content-Type",
"value": "application/json; odata.metadata=minimal"
},
{
"name": "Location",
"value": "https://graph.microsoft.com/v1.0/users/12345678-1234-1234-1234-123456789abc"
}
]
}
}
]
}
S ohledem na následující požadavek:
POST https://graph.microsoft.com/v1.0/users
Content-Type: application/json
{
"displayName": "Megan Bowen",
"userPrincipalName": "MeganB@M365x214355.onmicrosoft.com",
"accountEnabled": true,
"givenName": "Megan",
"surname": "Bowen",
"jobTitle": "Product Manager"
}
Odpověď je:
HTTP/1.1 200 Connection Established
Content-Length: 0
HTTP/1.1 201 Created
Cache-Control: no-store
x-ms-ags-diagnostic:
Strict-Transport-Security:
request-id: 12345678-1234-1234-1234-123456789abc
client-request-id: 12345678-1234-1234-1234-123456789abc
Date: 9/10/2025 10:28:35 AM
Content-Type: application/json; odata.metadata=minimal
Location: https://graph.microsoft.com/v1.0/users/12345678-1234-1234-1234-123456789abc
OData-Version: 4.0
Content-Length: 648
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"id": "12345678-1234-1234-1234-123456789abc",
"businessPhones": null,
"displayName": "Megan Bowen",
"givenName": "Megan",
"jobTitle": "Product Manager",
"mail": null,
"mobilePhone": null,
"officeLocation": null,
"preferredLanguage": null,
"surname": "Bowen",
"userPrincipalName": "MeganB@M365x214355.onmicrosoft.com",
"accountEnabled": true,
"createdDateTime": "2024-01-15T10:30:00Z",
"department": null,
"companyName": null,
"city": null,
"country": null,
"postalCode": null,
"state": null,
"streetAddress": null,
"usageLocation": null
}
Napodobení vlastností souboru
| Vlastnictví | Popis | Povinné |
|---|---|---|
request |
Objekt požadavku , který definuje požadavek, na který má reagovat | Ano |
response |
Objekt odpovědi , který definuje odpověď k vrácení | Ano |
Objekt požadavku
Každý požadavek má následující vlastnosti:
| Vlastnictví | Popis | Povinné | Výchozí hodnota | Ukázková hodnota |
|---|---|---|---|---|
url |
Absolutní adresa URL koncového bodu rozhraní API pro odpověď na | Ano | https://jsonplaceholder.typicode.com/posts |
|
method |
Příkaz HTTP použitý ke shodě s požadavky url |
Ne | GET |
GET |
nth |
Určuje, že proxy server by měl reagovat až poté, co zachytí požadavek na nth čas. | Ne | 2 |
|
bodyFragment |
Řetězec, který by měl být v textu požadavku | Ne | foo |
Poznámky
V vlastnosti použijte hvězdičku (*), url pokud chcete v adrese URL spárovat libovolnou řadu znaků. Například https://jsonplaceholder.typicode.com/* odpovídá https://jsonplaceholder.typicode.com/posts a https://jsonplaceholder.typicode.com/comments. V modulu runtime dev Proxy převede každý z nich * na regulární výraz .*.
Při definování napodobení umístěte nejprve nejvýraznější napodobení. Pokud máte například dva napodobení, jeden pro https://jsonplaceholder.typicode.com/posts a druhý pro https://jsonplaceholder.typicode.com/*, umístěte první napodobení. Jinak dev proxy odpovídá druhému napodobení první a vrátí odpověď pro https://jsonplaceholder.typicode.com/* všechny požadavky.
nth Tuto vlastnost použijte, pokud potřebujete odeslat jinou adresu URL požadavku. Můžete ho například použít k simulaci dlouhotrvající operace. Při prvním volání rozhraní API vrátí odpověď se zprávou inprogress . Při druhém volání rozhraní API vrátí odpověď se zprávou completed . Další informace o nth vlastnosti naleznete v tématu Mock nth požadavek.
bodyFragment Pomocí vlastnosti můžete odpovídat žádostem na základě základního obsahu. Pokud například chcete shodovat požadavky, které obsahují foo řetězec v textu, nastavte bodyFragment vlastnost na foohodnotu . Dev Proxy používá bodyFragment pouze pro jiné požadavky než GET.
Objekt odpovědi
Každá odpověď má následující vlastnosti:
| Vlastnictví | Popis | Povinné | Výchozí hodnota | Ukázková hodnota |
|---|---|---|---|---|
body |
Text, který se má odeslat jako odpověď na požadavek | Ne | prázdný | { "foo": "bar" } |
statusCode |
Stavový kód HTTP odpovědi | Ne | 200 |
404 |
headers |
Pole hlaviček, které se mají zahrnout do odpovědi | Ne | prázdný | [{ name: "content-type", "value": "application/json" }] |
Poznámky
Pokud chcete vrátit binární data, nastavte body vlastnost na řetězcovou hodnotu, která začíná @ s cestou k souboru vzhledem k souboru napodobení. Vrátí například @picture.jpg obrázek uložený v picture.jpg souboru ve stejném adresáři jako soubor napodobení.
Pokud chcete zrcadlit data požadavků v odpovědi, použijte @request.body.* zástupné symboly v textu odpovědi. Například @request.body.displayName vrátí hodnotu displayName vlastnosti z textu požadavku. Tato funkce funguje s vnořenými objekty a poli a umožňuje vytvářet dynamické odpovědi, které odrážejí data příchozích požadavků. Zástupný symbol podporuje různé typy hodnot JSON, včetně řetězců, čísel, logických hodnot a složitých objektů.