Gesimuleerde antwoorden
Het gebruik van Dev Proxy is de eenvoudigste manier om een API te mocken. Of u nu de front-end bouwt en de API nog niet gereed is, u moet uw back-end integreren met een externe service of u wilt uw toepassing testen met verschillende antwoorden. Met Dev Proxy kunt u API-antwoorden simuleren. Het is handig om Dev Proxy te gebruiken, omdat hiervoor geen wijzigingen in uw toepassingscode nodig zijn. U definieert mock-antwoorden voor elke API waarmee uw toepassing communiceert en Dev Proxy onderschept de aanvragen en reageert met de gesimuleerde antwoorden.
Als u API-antwoorden wilt mocken, moet u twee dingen doen:
- Maak een bestand met gesimuleerde antwoorden.
- Configureer Dev Proxy om de gesimuleerde antwoorden te gebruiken.
Fooi
Als u Visual Studio Code gebruikt, kunt u overwegen de Dev Proxy Toolkit-extensie te installeren. Het vereenvoudigt het werken met Dev Proxy-configuratiebestanden aanzienlijk.
Een bestand maken met gesimuleerde antwoorden
Dev Proxy bootst API-antwoorden na door MockResponsePlugin
te gebruiken. Met de invoegtoepassing kunt u een set gesimuleerde antwoorden definiƫren. U definieert de mocks in een afzonderlijk bestand. In het volgende codefragment ziet u een eenvoudig mock-antwoord voor een GET
aanvraag voor https://jsonplaceholder.typicode.com/posts/1
.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.0/mockresponseplugin.schema.json",
"mocks": [
{
"request": {
"url": "https://jsonplaceholder.typicode.com/posts/1",
"method": "GET"
},
"response": {
"statusCode": 200,
"body": {
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
},
"headers": [
{
"name": "Date",
"value": "Wed, 19 Feb 2025 09:03:37 GMT"
},
{
"name": "Content-Type",
"value": "application/json; charset=utf-8"
},
{
"name": "Content-Length",
"value": "292"
},
// [...] trimmed for brevity
]
}
}
]
}
Fooi
In plaats van het mocks-bestand handmatig te maken, kunt u de MockGeneratorPlugin
gebruiken om het mocks-bestand te genereren op basis van de onderschepte aanvragen.
Prioriteit van volgorde
Dev Proxy komt overeen met mocks in de volgorde waarin u deze definieert in het mocks-bestand. Als u meerdere antwoorden met dezelfde URL en methode definieert, gebruikt Dev Proxy het eerste overeenkomende antwoord.
Wanneer u de volgende configuratie gebruikt, reageert de proxy op alle GET
-verzoeken aan https://graph.microsoft.com/v1.0/me/photo
met 500 Internal Server Error
.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.0/mockresponseplugin.schema.json",
"mocks": [
{
"request": {
"url": "https://graph.microsoft.com/v1.0/me/photo",
"method": "GET"
},
"response": {
"statusCode": 500
}
},
{
"request": {
"url": "https://graph.microsoft.com/v1.0/me/photo",
"method": "GET"
},
"response": {
"statusCode": 404
}
}
]
}
Ondersteuning voor jokertekens
Dev Proxy ondersteunt het gebruik van jokertekens in de URL-eigenschap. U kunt sterretje (*
) gebruiken om overeen te komen met een willekeurige reeks tekens in de URL.
Wanneer u de volgende configuratie gebruikt, reageert Dev Proxy op alle aanvragen om het profiel van een gebruiker op te halen met hetzelfde antwoord.
{
"request": {
"url": "https://graph.microsoft.com/v1.0/users/*"
},
"response": {
"body": {
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"businessPhones": ["+1 425 555 0109"],
"displayName": "Adele Vance",
"givenName": "Adele",
"jobTitle": "Product Marketing Manager",
"mail": "AdeleV@M365x214355.onmicrosoft.com",
"mobilePhone": null,
"officeLocation": "18/2111",
"preferredLanguage": "en-US",
"surname": "Vance",
"userPrincipalName": "AdeleV@M365x214355.onmicrosoft.com",
"id": "87d349ed-44d7-43e1-9a83-5f2406dee5bd"
}
}
}
Wanneer u de volgende configuratie gebruikt, retourneert Dev Proxy dezelfde afbeelding van de schijf wanneer u het binaire van de foto van een willekeurige gebruiker opvraagt.
{
"request": {
"url": "https://graph.microsoft.com/v1.0/users/*/photo/$value"
},
"response": {
"body": "@picture.jpg",
"headers": [
{
"name": "content-type",
"value": "image/jpeg"
}
]
}
}
Wanneer u de volgende configuratie gebruikt, retourneert Dev Proxy hetzelfde antwoord wanneer u aanvraagt om het profiel van de huidige gebruiker op te halen met een queryreeksparameter.
{
"request": {
"url": "https://graph.microsoft.com/v1.0/me?*"
},
"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"
}
}
},
Reageren met inhoud van een bestand
Als u uw mocks-bestand schoon en georganiseerd wilt houden, kunt u de inhoud van het antwoord opslaan in een afzonderlijk bestand en ernaar verwijzen in het mocks-bestand. Als u Dev Proxy wilt instrueren, stelt u de eigenschap body
in op @
gevolgd door het bestandspad ten opzichte van het mocks-bestand om de hoofdtekst van het mock-antwoord te laden.
Met de volgende configuratie van een mock-antwoord geeft u bijvoorbeeld de dev-proxy de opdracht om te reageren op een aanvraag voor https://graph.microsoft.com/v1.0/me
met de inhoud van het response.json
bestand dat zich in dezelfde map bevindt als het mocks-bestand.
{
"request": {
"url": "https://graph.microsoft.com/v1.0/me",
"method": "GET"
},
"response": {
"body": "@response.json",
"headers": [
{
"name": "content-type",
"value": "application/json; odata.metadata=minimal"
}
]
}
}
Het @
-token werkt met tekst en binaire bestanden.
Dev Proxy configureren voor het gebruik van de mock-antwoorden
Nadat u het mocks-bestand hebt gemaakt, moet u Dev Proxy configureren om de gesimuleerde antwoorden te gebruiken. Als u Dev Proxy wilt configureren voor gesimuleerde antwoorden, voegt u de MockResponsePlugin
toe aan de lijst met invoegtoepassingen in het bestand devproxyrc.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.0/rc.schema.json",
"plugins": [
{
"name": "MockResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
"configSection": "mockResponsePlugin"
}
],
"urlsToWatch": [
"https://jsonplaceholder.typicode.com/*"
],
"mockResponsePlugin": {
"mocksFile": "mocks.json"
},
"logLevel": "information",
"newVersionNotification": "stable",
"showSkipMessages": true
}
Eerst voegt u de MockResponsePlugin
toe aan de lijst met invoegtoepassingen. U neemt een verwijzing op naar de configuratiesectie waarin u het pad naar het mocks-bestand opgeeft.
Wanneer u Dev Proxy start, wordt het mocks-bestand gelezen en worden de gesimuleerde antwoorden gebruikt om te reageren op de aanvragen die overeenkomen met de gedefinieerde mocks.
Ondersteuning voor niet-gemockte aanvragen
Dev Proxy biedt ondersteuning voor het genereren van een fout wanneer een proxy een niet-versleutelde aanvraag onderschept. De mogelijkheid om niet-gemockte aanvragen te laten falen, is handig voor het identificeren van aanvragen die u hebt gemist in uw mock-bestand.
Om deze functie in te schakelen, voegt u de instelling blockUnmockedRequests
toe en activeert u deze in de MockResponsePlugin configuratiesectie van het devproxyrc bestand.
{
"mocksPlugin": {
"mocksFile": "mocks.json",
"blockUnmockedRequests": true
}
}
Wanneer Dev Proxy een aanvraag onderschept die niet kan worden gesimuleerd, retourneert deze een 502 Bad Gateway
-antwoord.
Volgende stap
Meer informatie over mockResponsePlugin.
Monsters
Zie ook de gerelateerde Dev Proxy-voorbeelden: