Kommentar
Å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.
Konfigurationsexempel
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
"plugins": [
{
"name": "MockResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mocksPlugin"
}
],
"mocksPlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.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
Tip
Om du vill skapa en mocks-fil från filer med råa HTTP-svar använder du mocks from-http-responses kommandot .
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.
Fil: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.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.
Fil: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.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.
Fil: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.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 bara på den andra matchande begäran. Dev Proxy skickar andra begäranden till API:et.
Fil: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.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.
Fil: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.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.
Fil: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.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 |
Svara endast på den n:e avlyssnade begäran som matchar mockens method, urloch bodyFragment |
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 .*.
Dev Proxy ignorerar skiftläge när egenskapen url matchas mot begärande-URL:en. Till exempel matchar en mock för https://jsonplaceholder.typicode.com/Posts en begäran till https://jsonplaceholder.typicode.com/posts. Om du definierar flera modeller för samma metod med URL:er som endast skiljer sig åt i höljet använder Dev Proxy den första matchande mocken.
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 ett annat svar 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 . Dev Proxy räknar varje avlyssnad begäran som matchar mocks method, url, och bodyFragment, oavsett om den returnerar ett falskt svar för den eller inte. Du behöver inte ett reservutfall för samma URL: Om inget hån gäller för en begäran skickar Dev Proxy den till API:et. 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 anger body egenskapen till ett JSON-objekt eller en matris serialiserar Dev Proxy den till JSON. Om du ställer in den på en sträng skickar Dev Proxy strängen as-is, utan omgivande citattecken. Använd en strängtext för att returnera oformaterad text, HTML, XML eller annat icke-JSON-innehåll. Eftersom Dev Proxy som standard content-type anger rubriken till application/json, anger du även rubriken så att den content-type matchar ditt innehåll, till exempel text/plain.
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.