Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Simulerar svar.
Definition av plugin-instans
{
"name": "MockResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mocksPlugin"
}
Konfigurationsexempel
{
"mocksPlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.schema.json",
"mocksFile": "mocks.json"
}
}
Konfigurationsegenskaper
| Fastighet | Beskrivning | Förinställning |
|---|---|---|
mocksFile |
Sökväg till filen som innehåller falska svar | mocks.json |
blockUnmockedRequests |
Returnera 502 Bad Gateway svar för begäranden som inte hånas |
false |
Kommandoradsalternativ
| Namn | Beskrivning | Förinställning |
|---|---|---|
-n, --no-mocks |
Inaktivera inläsning av mock-begäranden | false |
--mocks-file |
Sökväg till filen som innehåller falska svar | - |
Simulerar filexempel
Här följer exempel på falska objekt.
Svara med brödtext
Svar på en begäran med ett 200 OK-svar och en JSON-brödtext.
{
"$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"
}
]
}
}
]
}
Svara med fel
Svara på en begäran med svaret 404 Hittades inte.
{
"$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
}
}
]
}
Svara med binära data
Svara på en begäran med en binär avbildning som läses in från en fil på disken.
{
"$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"
}
]
}
}
]
}
Svara på nth begäran
Svara på en begäran först efter den andra gången den anropas.
{
"$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
}
}
}
]
}
Svara som matchar begärandetexten
Svara på en begäran som innehåller en specifik sträng i brödtexten.
{
"$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..."
}
}
}
]
}
Speglingsbegärandedata som svar
Svara med data som speglar värden från begärandetexten med hjälp av @request.body.* platshållare.
{
"$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"
}
]
}
}
]
}
Med följande begäran:
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"
}
Svaret är:
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
}
Simulerar filegenskaper
| Fastighet | Beskrivning | Krävs |
|---|---|---|
request |
Begär objekt som definierar begäran att svara på | Ja |
response |
Svarsobjekt som definierar svaret för att returnera | Ja |
Begär objekt
Varje begäran har följande egenskaper:
| Fastighet | Beskrivning | Krävs | Standardvärde | Exempelvärde |
|---|---|---|---|---|
url |
Absolut URL till en API-slutpunkt att svara på | Ja | https://jsonplaceholder.typicode.com/posts |
|
method |
HTTP-verb som används för att matcha begäran med url |
Nej | GET |
GET |
nth |
Avgör att proxyn endast ska svara efter när begäran fångas upp för den n:e gången | Nej | 2 |
|
bodyFragment |
En sträng som ska finnas i begärandetexten | Nej | foo |
Anmärkningar
Använd asterisk (*) i egenskapen url om du vill matcha en serie tecken i URL:en. Till exempel matchar https://jsonplaceholder.typicode.com/*https://jsonplaceholder.typicode.com/posts och https://jsonplaceholder.typicode.com/comments. Vid körning konverterar Dev Proxy var och * en till ett reguljärt uttryck .*.
När du definierar hån placerar du de mest specifika hånen först. Om du till exempel har två mocks, en för https://jsonplaceholder.typicode.com/posts och en för https://jsonplaceholder.typicode.com/*, placerar du det första hånet först. Annars matchar Dev Proxy det andra hånet först och returnerar svaret för https://jsonplaceholder.typicode.com/* alla begäranden.
Använd egenskapen nth om du behöver skicka en annan till samma begärande-URL. Använd den till exempel för att simulera en tidskrävande åtgärd. Första gången du anropar API:et returneras ett svar med ett inprogress meddelande. Andra gången du anropar API:et returneras ett svar med meddelandet completed . Mer information om egenskapen finns i nthMock nth request (Mock nth request).
Med hjälp av bodyFragment egenskapen kan du matcha begäranden baserat på brödtextinnehållet. Om du till exempel vill matcha begäranden som innehåller strängen foo i brödtexten anger du bodyFragment egenskapen till foo. Dev Proxy använder bodyFragment endast för andra begäranden än GET.
Svarsobjekt
Varje svar har följande egenskaper:
| Fastighet | Beskrivning | Krävs | Standardvärde | Exempelvärde |
|---|---|---|---|---|
body |
Brödtext som ska skickas som svar på begäran | Nej | tom | { "foo": "bar" } |
statusCode |
Http-statuskod för svar | Nej | 200 |
404 |
headers |
Matris med rubriker som ska inkluderas i svaret | Nej | tom | [{ name: "content-type", "value": "application/json" }] |
Anmärkningar
Om du vill returnera binära data anger body du egenskapen till ett strängvärde som börjar med @ följt av filsökvägen i förhållande till mocks-filen. Returnerar till exempel @picture.jpg avbildningen picture.jpg som lagras i filen i samma katalog som mocks-filen.
Om du vill spegla begärandedata i svaret använder du @request.body.* platshållare i svarstexten. Returnerar @request.body.displayName till exempel värdet för displayName egenskapen från begärandetexten. Den här funktionen fungerar med kapslade objekt och matriser, så att du kan skapa dynamiska svar som återspeglar inkommande begärandedata. Platshållarbytet stöder olika JSON-värdetyper, inklusive strängar, tal, booleska objekt och komplexa objekt.