Delen via


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:

  1. Maak een bestand met gesimuleerde antwoorden.
  2. 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 MockResponsePluginte 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: