Freigeben über


Simulierte Antworten

Die Verwendung von Dev Proxy ist die einfachste Möglichkeit, eine API zu modellieren. Ganz gleich, ob Sie das Front-End erstellen und die API noch nicht bereit ist, Sie müssen Ihr Back-End in einen externen Dienst integrieren oder Ihre Anwendung mit unterschiedlichen Antworten testen, Dev Proxy kann Ihnen dabei helfen, API-Antworten zu simulieren. Was die Verwendung von Dev Proxy besonders gut macht, besteht darin, dass keine Änderungen an Ihrem Anwendungscode erforderlich sind. Sie definieren simulierte Antworten für jede API, mit der Ihre Anwendung interagiert, und Dev Proxy fängt die Anforderungen ab und antwortet mit den simulierten Antworten, die Sie definiert haben.

Um API-Antworten zu modellieren, müssen Sie zwei Dinge ausführen:

  1. Erstellen Sie eine Datei mit simulierten Antworten.
  2. Konfigurieren Sie Dev Proxy für die Verwendung der simulierten Antworten.

Tipp

Wenn Sie Visual Studio Code verwenden, sollten Sie die Dev Proxy Toolkit-Erweiterung installieren. Die Arbeit mit Dev Proxy-Konfigurationsdateien wird erheblich vereinfacht.

Erstellen einer Datei mit simulierten Antworten

Dev Proxy simuliert API-Antworten mithilfe der MockResponsePlugin. Mit dem Plug-In können Sie eine Reihe von simulierten Antworten definieren. Sie definieren die Modelle in einer separaten Datei. Der folgende Codeausschnitt veranschaulicht eine einfache simulierte Antwort für eine GET Anforderung an https://jsonplaceholder.typicode.com/posts/1.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/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
        ]
      }
    }
  ]
}

Tipp

Anstatt die Pseudodatei manuell zu erstellen, können Sie das MockGeneratorPlugin verwenden, um die Pseudodatei basierend auf den abgefangenen Anforderungen zu generieren.

Rangfolge

Dev Proxy gleicht Modelle in der Reihenfolge ab, in der Sie sie in der Mocks-Datei definieren. Wenn Sie mehrere Antworten mit derselben URL und Methode definieren, verwendet Dev Proxy die erste übereinstimmende Antwort.

Wenn Sie die folgende Konfiguration verwenden, antwortet der Proxy auf alle GET-Anforderungen https://graph.microsoft.com/v1.0/me/photo mit 500 Internal Server Error.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/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
      }
    }
  ]
}

Platzhalterunterstützung

Dev Proxy unterstützt die Verwendung von Platzhaltern in der URL-Eigenschaft. Sie können das Sternchen (*) verwenden, um einer beliebigen Reihe von Zeichen in der URL zu entsprechen.

Wenn Sie die folgende Konfiguration verwenden, antwortet Dev Proxy auf alle Anforderungen, um das Profil eines Benutzers mit derselben Antwort abzurufen.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/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"
        }
      }
    }
  ]
}

Wenn Sie die folgende Konfiguration verwenden, gibt Dev Proxy dasselbe Image vom Datenträger zurück, wenn Sie die Binärdatei eines Beliebigen Benutzerfotos anfordern.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/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"
          }
        ]
      }
    }
  ]
}

Wenn Sie die folgende Konfiguration verwenden, gibt Dev Proxy dieselbe Antwort zurück, wenn Sie anfordern, das Profil des aktuellen Benutzers mit einem beliebigen Abfragezeichenfolgenparameter abzurufen.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/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"
        }
      }
    }
  ]
}

Mit dem Inhalt einer Datei antworten

Damit Ihre Mocks-Datei sauber und organisiert bleibt, können Sie den Inhalt der Antwort in einer separaten Datei speichern und in der Mocks-Datei darauf verweisen. Um Dev Proxy anzuweisen, den Pseudoantworttext aus einer Datei zu laden, legen Sie die body-Eigenschaft auf @ gefolgt vom Dateipfad relativ zur Pseudodatei fest.

Die folgende Pseudoantwortkonfiguration weist Dev Proxy beispielsweise an, auf jede Anforderung an https://graph.microsoft.com/v1.0/me mit dem Inhalt der response.json Datei zu reagieren, die sich im selben Ordner wie die Mocks-Datei befindet.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/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"
          }
        ]
      }
    }
  ]
}

Die Verwendung des @-tokens funktioniert mit Text- und Binärdateien.

Konfigurieren des Dev-Proxys für die Verwendung der simulierten Antworten

Nachdem Sie die Mocks-Datei erstellt haben, müssen Sie Dev Proxy für die Verwendung der simulierten Antworten konfigurieren. Um Dev Proxy für simulierte Antworten zu konfigurieren, fügen Sie MockResponsePlugin zur Liste der Plugins in der Datei devproxyrc hinzu.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/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/v0.29.2/mockresponseplugin.schema.json",
    "mocksFile": "mocks.json"
  },
  "logLevel": "information",
  "newVersionNotification": "stable",
  "showSkipMessages": true
}

Zuerst fügen Sie MockResponsePlugin zur Liste der Plug-Ins hinzu. Sie fügen einen Verweis auf den Konfigurationsabschnitt ein, in dem Sie den Pfad zu Ihrer Mocks-Datei angeben.

Wenn Sie Dev Proxy starten, liest sie die Mocks-Datei und verwendet die Simuliertantworten, um auf die Anforderungen zu reagieren, die den definierten Mocks entsprechen.

Unterstützung für echte Anforderungen

Dev Proxy unterstützt das Auslösen eines Fehlers, wenn der Proxy eine echte Anforderung abfängt. Die Möglichkeit, nicht gemockte Anfragen fehlschlagen zu lassen, ist nützlich, um Anfragen zu identifizieren, die Sie in Ihrer Mock-Datei verpasst haben.

Um dieses Feature zu aktivieren, fügen Sie die blockUnmockedRequests Einstellung zu MockResponsePlugin config section in the devproxyrc file hinzu und aktivieren sie sie.

{
  "mocksPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/mockresponseplugin.schema.json",
    "mocksFile": "mocks.json",
    "blockUnmockedRequests": true
  }
}

Wenn Dev Proxy eine Anforderung abfangen, die nicht simuliert werden kann, wird eine 502 Bad Gateway Antwort zurückgegeben.

Nächster Schritt

Erfahren Sie mehr über den MockResponsePlugin.

Beispiele

Siehe auch die zugehörigen Dev Proxy-Beispiele: