Megosztás a következőn keresztül:


MockResponsePlugin

A válaszokat szimulálja.

Képernyőkép egy parancssorról, amelyen a Dev Proxy szimulálja a GitHub API-nak küldött kérés válaszát.

Beépülő modulpéldány definíciója

{
  "name": "MockResponsePlugin",
  "enabled": true,
  "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
  "configSection": "mocksPlugin"
}

Példa konfigurációra

{
  "mocksPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.schema.json",
    "mocksFile": "mocks.json"
  }
}

Konfigurációs tulajdonságok

Ingatlan Leírás Alapértelmezett
mocksFile A modellválaszokat tartalmazó fájl elérési útja mocks.json
blockUnmockedRequests Nem kijátszott kérések válaszának visszaadása 502 Bad Gateway false

Parancssori beállítások

Név Leírás Alapértelmezett
-n, --no-mocks A modellkérelmek betöltésének letiltása false
--mocks-file A modellválaszokat tartalmazó fájl elérési útja -

Példák példaképek a mocks fájlra

Az alábbiakban példákat láthat a modellobjektumokra.

Válasz szövegtörzsgel

Válasz egy 200 OK-választ és egy JSON-törzset tartalmazó kérésre.

{
  "$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"
          }
        ]
      }
    }
  ]
}

Válasz hibával

Válaszoljon egy 404-ben nem található választ tartalmazó kérésre.

{
  "$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
      }
    }
  ]
}

Válasz bináris adatokkal

Válasz egy lemezen lévő fájlból betöltött bináris lemezképet tartalmazó kérésre.

{
  "$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"
          }
        ]
      }
    }
  ]
}

Válasz kérésre nth

Egy kérésre csak a második hívás után válaszolhat.

{
  "$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
        }
      }
    }
  ]
}

A kérelem törzsének megfelelő válasz

Válasz egy olyan kérésre, amely egy adott sztringet tartalmaz a törzsben.

{
  "$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..."
        }
      }
    }
  ]
}

Kérés adatainak tükrözése válaszként

Válasz olyan adatokkal, amelyek helyőrzők használatával @request.body.* tükrözik a kérelem törzsének értékeit.

{
  "$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"
          }
        ]
      }
    }
  ]
}

A következő kérésnek megfelelően:

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"
}

A válasz a következő:

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
}

Fájltulajdonságok szimulálása

Ingatlan Leírás Kötelező
request Kérelemobjektum , amely meghatározza a válaszkérést igen
response Válaszobjektum , amely meghatározza a visszaadandó választ igen

Objektum kérése

Minden kérelem a következő tulajdonságokkal rendelkezik:

Ingatlan Leírás Kötelező Alapértelmezett érték Mintaérték
url Az API-végpont abszolút URL-címe a válaszhoz igen https://jsonplaceholder.typicode.com/posts
method A kérelem egyeztetéséhez használt HTTP-parancs url Nem GET GET
nth Azt határozza meg, hogy a proxynak csak az n. időpontra vonatkozó kérés elfogásakor kell válaszolnia Nem 2
bodyFragment Egy sztring, amely szerepelnie kell a kérelem törzsében Nem foo

Megjegyzések

Használjon csillagot (*) a url tulajdonságban, ha meg szeretne egyezni az URL-címben szereplő karaktersorozatok bármelyikével. Például a https://jsonplaceholder.typicode.com/* megegyezik a https://jsonplaceholder.typicode.com/posts-gyel és a https://jsonplaceholder.typicode.com/comments-vel. Futtatókörnyezetben a Dev Proxy mindegyiket * normál kifejezéssé .*alakítja.

A makettek definiálásakor először a legspecifikusabb maketteket helyezze el. Ha például két makettje van, az egyik a másikhoz https://jsonplaceholder.typicode.com/posts , a másikhoz https://jsonplaceholder.typicode.com/*pedig az, helyezze először az első makettet. Ellenkező esetben a Dev Proxy először a második modellnek felel meg, és az összes kérés válaszát https://jsonplaceholder.typicode.com/* adja vissza.

Használja a nth tulajdonságot, ha egy másikat kell küldenie ugyanahhoz a kérelem URL-címéhez. Használhatja például egy hosszú ideig futó művelet szimulálására. Amikor első alkalommal hívja meg az API-t, egy üzenettel inprogress válaszol. A második alkalommal, amikor meghívja az API-t, egy választ ad vissza az completed üzenettel. További információ a nth tulajdonságról: Mock nth request.

A tulajdonság használatával a bodyFragment kéréseket a törzs tartalma alapján egyeztetheti. Ha például egyezni szeretne a törzsben lévő foo sztringet tartalmazó kérésekkel, állítsa a tulajdonságot a bodyFragment következőre foo: . A fejlesztői proxy bodyFragment csak a nem GETa .

Válaszobjektum

Minden válasz a következő tulajdonságokkal rendelkezik:

Ingatlan Leírás Kötelező Alapértelmezett érték Mintaérték
body A kérésre adott válaszként küldendő törzs Nem üres { "foo": "bar" }
statusCode Válasz HTTP-állapotkódja Nem 200 404
headers A válaszban szerepeltetni kívánt fejlécek tömbje Nem üres [{ name: "content-type", "value": "application/json" }]

Megjegyzések

Ha bináris adatokat szeretne visszaadni, állítsa a body tulajdonságot egy sztringértékre, amely a modellfájlhoz viszonyított fájlelérési úttal @ kezdődik. Visszaadja például a fájlban @picture.jpg tárolt képet ugyanabban a könyvtárban, picture.jpg mint a makettfájl.

A válaszban szereplő kérésadatok tükrözéséhez használjon @request.body.* helyőrzőket a válasz törzsében. A tulajdonság értékét például @request.body.displayName a displayName kérelem törzséből adja vissza. Ez a funkció beágyazott objektumokkal és tömbökkel működik, így dinamikus válaszokat hozhat létre, amelyek tükrözik a bejövő kérések adatait. A helyőrző csere különböző JSON-értéktípusokat támogat, például sztringeket, számokat, logikai értékeket és összetett objektumokat.

Következő lépés