Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Hiermee worden antwoorden gesimuleerd.
Definitie van invoegtoepassingexemplaren
{
"name": "MockResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mocksPlugin"
}
Configuratievoorbeeld
{
"mocksPlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.schema.json",
"mocksFile": "mocks.json"
}
}
Configuratie-eigenschappen
| Vastgoed | Beschrijving | Verstek |
|---|---|---|
mocksFile |
Pad naar het bestand met gesimuleerde antwoorden | mocks.json |
blockUnmockedRequests |
Antwoord retourneren 502 Bad Gateway voor aanvragen die niet worden gesimuleerd |
false |
Opdrachtregelopties
| Naam | Beschrijving | Verstek |
|---|---|---|
-n, --no-mocks |
Het laden van mock-aanvragen uitschakelen | false |
--mocks-file |
Pad naar het bestand met gesimuleerde antwoorden | - |
Voorbeelden van mocks-bestanden
Hieronder volgen voorbeelden van mock-objecten.
Reageren met hoofdtekst
Antwoord op een aanvraag met een 200 OK-antwoord en een JSON-hoofdtekst.
{
"$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"
}
]
}
}
]
}
Reageren met fout
Reageer op een aanvraag met een antwoord van 404 Niet gevonden.
{
"$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
}
}
]
}
Reageren met binaire gegevens
Reageer op een aanvraag met een binaire installatiekopieën die zijn geladen vanuit een bestand op schijf.
{
"$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"
}
]
}
}
]
}
Reageren op nth aanvraag
Reageer alleen op een aanvraag na de tweede keer dat deze wordt aangeroepen.
{
"$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
}
}
}
]
}
Reageren die overeenkomt met de hoofdtekst van de aanvraag
Reageer op een aanvraag die een specifieke tekenreeks in de hoofdtekst bevat.
{
"$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..."
}
}
}
]
}
Gespiegelde aanvraaggegevens in reactie
Reageer met gegevens die waarden uit de aanvraagbody spiegelen met behulp van @request.body.* tijdelijke aanduidingen.
{
"$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"
}
]
}
}
]
}
Gezien de volgende aanvraag:
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"
}
Het antwoord is:
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
}
Eigenschappen van mocks-bestanden
| Vastgoed | Beschrijving | Verplicht |
|---|---|---|
request |
Aanvraagobject waarmee de aanvraag wordt gedefinieerd waarop moet worden gereageerd | ja |
response |
Antwoordobject dat het antwoord definieert dat moet worden geretourneerd | ja |
Verzoekobject
Elke aanvraag heeft de volgende eigenschappen:
| Vastgoed | Beschrijving | Verplicht | Standaardwaarde | Voorbeeldwaarde |
|---|---|---|---|---|
url |
Absolute URL naar een API-eindpunt om op te reageren | ja | https://jsonplaceholder.typicode.com/posts |
|
method |
HTTP-werkwoord dat wordt gebruikt om de aanvraag te vergelijken met url |
Nee | GET |
GET |
nth |
Bepaalt dat de proxy pas moet reageren na het onderscheppen van de aanvraag voor de ne keer | Nee | 2 |
|
bodyFragment |
Een tekenreeks die aanwezig moet zijn in de hoofdtekst van de aanvraag | Nee | foo |
Opmerkingen
Gebruik een sterretje (*) in de url eigenschap als u een reeks tekens in de URL wilt vergelijken.
https://jsonplaceholder.typicode.com/* komt bijvoorbeeld overeen met https://jsonplaceholder.typicode.com/posts en https://jsonplaceholder.typicode.com/comments. In runtime converteert Dev Proxy elk * naar een reguliere expressie .*.
Wanneer u mocks definieert, plaatst u eerst de meest specifieke mocks. Als u bijvoorbeeld twee mocks hebt, één voor en één voor https://jsonplaceholder.typicode.com/postshttps://jsonplaceholder.typicode.com/*, plaatst u eerst de eerste mock. Anders komt Dev Proxy overeen met de tweede mock eerst en retourneert het antwoord voor https://jsonplaceholder.typicode.com/* alle aanvragen.
Gebruik de nth eigenschap als u een andere aanvraag-URL wilt verzenden. Gebruik deze bijvoorbeeld om een langdurige bewerking te simuleren. De eerste keer dat u de API aanroept, wordt er een antwoord met een inprogress bericht geretourneerd. De tweede keer dat u de API aanroept, wordt er een antwoord geretourneerd met het completed bericht. Zie nth voor meer informatie over de eigenschap.
Met behulp van de bodyFragment eigenschap kunt u aanvragen vergelijken op basis van de hoofdtekstinhoud. Als u bijvoorbeeld aanvragen wilt vergelijken die de foo tekenreeks in de hoofdtekst bevatten, stelt u de bodyFragment eigenschap in op foo. Dev Proxy gebruikt bodyFragment alleen voor andere aanvragen dan GET.
Antwoordobject
Elk antwoord heeft de volgende eigenschappen:
| Vastgoed | Beschrijving | Verplicht | Standaardwaarde | Voorbeeldwaarde |
|---|---|---|---|---|
body |
Hoofdtekst die moet worden verzonden als antwoord op de aanvraag | Nee | leeg | { "foo": "bar" } |
statusCode |
HTTP-statuscode van antwoord | Nee | 200 |
404 |
headers |
Matrix van headers die moeten worden opgenomen in het antwoord | Nee | leeg | [{ name: "content-type", "value": "application/json" }] |
Opmerkingen
Als u binaire gegevens wilt retourneren, stelt u de body eigenschap in op een tekenreekswaarde die begint met @ gevolgd door het bestandspad ten opzichte van het mocks-bestand. Retourneert bijvoorbeeld @picture.jpg de afbeelding die is opgeslagen in het picture.jpg bestand in dezelfde map als het mocks-bestand.
Als u aanvraaggegevens in het antwoord wilt spiegelen, gebruikt @request.body.* u tijdelijke aanduidingen in de hoofdtekst van het antwoord. Retourneert bijvoorbeeld @request.body.displayName de waarde van de displayName eigenschap uit de hoofdtekst van de aanvraag. Deze functie werkt met geneste objecten en matrices, zodat u dynamische antwoorden kunt maken die overeenkomen met de binnenkomende aanvraaggegevens. De vervanging van tijdelijke aanduidingen ondersteunt verschillende typen JSON-waarden, waaronder tekenreeksen, getallen, booleaanse waarden en complexe objecten.