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.
Att använda Dev Proxy är det enklaste sättet att håna ett API. Oavsett om du skapar klientdelen och API:et inte är klart än, måste du integrera serverdelen med en extern tjänst, eller om du vill testa programmet med olika svar, kan Dev Proxy hjälpa dig att simulera API-svar. Det som är bra med att använda Dev Proxy är att det inte kräver några ändringar i programkoden. Du definierar falska svar för alla API:er som ditt program interagerar med och Dev Proxy fångar upp begäranden och svarar med de falska svar som du har definierat.
Om du vill simulera API-svar måste du göra två saker:
- Skapa en fil med simulerade svar.
- Konfigurera Dev Proxy för att använda falska svar.
Tips
Om du använder Visual Studio Code bör du överväga att installera Dev Proxy Toolkit-tillägget. Det förenklar avsevärt arbetet med Dev Proxy-konfigurationsfiler.
Skapa en fil med falska svar
Dev Proxy hånar API-svar med hjälp av MockResponsePlugin. Med plugin-programmet kan du definiera en uppsättning falska svar. Du definierar mocks i en separat fil. Följande kodfragment visar ett enkelt mock-svar för en GET-begäran till https://jsonplaceholder.typicode.com/posts/1.
{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.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
        ]
      }
    }
  ]
}
Tips
I stället för att skapa mocks-filen manuellt kan du använda MockGeneratorPlugin för att generera mocks-filen baserat på de avlyssnade begärandena.
Ordningsprioret
Dev Proxy matchar mocks i den ordning du definierar dem i mocksfilen. Om du definierar flera svar med samma URL och metod använder Dev Proxy det första matchande svaret.
När du använder följande konfiguration svarar proxyn på alla GET begäranden till https://graph.microsoft.com/v1.0/me/photo med 500 Internal Server Error.
{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.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
      }
    }
  ]
}
Stöd för jokertecken
Dev Proxy stöder användning av jokertecken i URL-egenskapen. Du kan använda asterisktecknet (*) för att matcha alla teckenserier i URL:en.
När du använder följande konfiguration svarar Dev Proxy på alla begäranden för att få en användares profil med samma svar.
{
  "$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/*"
      },
      "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"
        }
      }
    }
  ]
}
När du använder följande konfiguration returnerar Dev Proxy samma avbildning från disken när du begär att få binärfilen för en användares foto.
{
  "$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"
      },
      "response": {
        "body": "@picture.jpg",
        "headers": [
          {
            "name": "content-type",
            "value": "image/jpeg"
          }
        ]
      }
    }
  ]
}
När du använder följande konfiguration returnerar Dev Proxy samma svar när du begär att få den aktuella användarens profil med valfri frågesträngsparameter.
{
  "$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?*"
      },
      "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"
        }
      }
    }
  ]
}
Svara med innehållet i en fil
Om du vill hålla din mocks-fil ren och organiserad kan du lagra innehållet i svaret i en separat fil och referera till den i mocks-filen. För att instruera Dev Proxy att läsa in mock-svarstexten från en fil, anger du egenskapen body till @ följt av filsökvägen i förhållande till mocksfilen.
Till exempel instruerar följande modellsvarskonfiguration Dev Proxy att svara på varje begäran till https://graph.microsoft.com/v1.0/me med innehållet i response.json-filen som finns i samma mappen som mocks-filen.
{
  "$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": "@response.json",
        "headers": [
          {
            "name": "content-type",
            "value": "application/json; odata.metadata=minimal"
          }
        ]
      }
    }
  ]
}
Att använda @-token fungerar med text och binära filer.
Konfigurera Dev Proxy för att använda falska svar
När du har skapat mocks-filen måste du konfigurera Dev Proxy för att använda de falska svaren. Om du vill konfigurera Dev Proxy för att simulera svar lägger du till MockResponsePlugin i listan över plugins i filen devproxyrc.
{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "MockResponsePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "mockResponsePlugin"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ],
  "mockResponsePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.schema.json",
    "mocksFile": "mocks.json"
  },
  "logLevel": "information",
  "newVersionNotification": "stable",
  "showSkipMessages": true
}
Först lägger du till MockResponsePlugin i listan över plugin-program. Du inkluderar en referens till dess konfigurationsavsnitt där du anger sökvägen till din mocks-fil.
När du startar Dev Proxy läser den mocks-filen och använder de falska svaren för att svara på de begäranden som matchar de definierade mocksna.
Stöd för ohockad begäran
Dev Proxy har stöd för att utlösa ett fel när proxyn fångar upp en o-mockad begäran. Förmågan att hantera begäranden som inte har mockats är användbar för att identifiera begäranden som du missade i din mocks-fil.
Om du vill aktivera den här funktionen lägger du till och aktiverar inställningen blockUnmockedRequests för att MockResponsePlugin konfigurationsavsnittet i devproxyrc- fil.
{
  "mocksPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.schema.json",
    "mocksFile": "mocks.json",
    "blockUnmockedRequests": true
  }
}
När Dev Proxy fångar upp en begäran som den inte kan simulera, returnerar den ett 502 Bad Gateway-svar.
Nästa steg
Läs mer om MockResponsePlugin.
Prover
Se även relaterade Dev Proxy-exempel: