Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Simuliert Antworten.
Konfigurationsbeispiel
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
"plugins": [
{
"name": "MockResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mocksPlugin"
}
],
"mocksPlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/mockresponseplugin.schema.json",
"mocksFile": "mocks.json"
}
}
Konfigurationseigenschaften
| Eigentum | BESCHREIBUNG | Standard |
|---|---|---|
mocksFile |
Pfad zur Datei, die simulierte Antworten enthält | mocks.json |
blockUnmockedRequests |
Antwort für Anforderungen zurückgeben 502 Bad Gateway , die nicht simuliert werden |
false |
Befehlszeilenoptionen
| Name | BESCHREIBUNG | Standard |
|---|---|---|
-n, --no-mocks |
Laden simulierter Anforderungen deaktivieren | false |
--mocks-file |
Pfad zur Datei, die simulierte Antworten enthält | - |
Simulierte Dateibeispiele
Tipp
Verwenden Sie den mocks from-http-responses Befehl, um eine Pseudodatei aus Dateien mit unformatierten HTTP-Antworten zu erstellen.
Nachfolgend sind Beispiele für Simulierte Objekte aufgeführt.
Antworten mit Textkörper
Antwort auf eine Anforderung mit einer 200 OK-Antwort und einem JSON-Textkörper.
Datei: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.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"
}
]
}
}
]
}
Mit Fehler antworten
Antworten Sie auf eine Anforderung mit einer 404 Nicht gefundenen Antwort.
Datei: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"request": {
"url": "https://graph.microsoft.com/v1.0/me/photo",
"method": "GET"
},
"response": {
"statusCode": 404
}
}
]
}
Antworten mit Binärdaten
Antworten Sie auf eine Anforderung mit einem binärimage, das von einer Datei auf dem Datenträger geladen wurde.
Datei: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.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"
}
]
}
}
]
}
Antworten auf nth Anfrage
Antworten Sie nur auf die zweite übereinstimmende Anforderung. Dev Proxy übergibt andere Anforderungen an die API.
Datei: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.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
}
}
}
]
}
Antworten, die mit dem Anforderungstext übereinstimmen
Antworten Sie auf eine Anforderung, die eine bestimmte Zeichenfolge im Text enthält.
Datei: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.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..."
}
}
}
]
}
Spiegelung von Anforderungsdaten als Antwort
Antworten Sie mit Daten, die Werte aus dem Anforderungstext mithilfe von @request.body.* Platzhaltern spiegeln.
Datei: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.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"
}
]
}
}
]
}
Angesichts der folgenden Anforderung:
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"
}
Die Antwort lautet:
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
}
Simuliert Dateieigenschaften
| Eigentum | BESCHREIBUNG | Erforderlich |
|---|---|---|
request |
Anforderungsobjekt , das die Anforderung definiert, auf die geantwortet werden soll | ja |
response |
Response-Objekt , das die Antwort definiert, die zurückgegeben werden soll | ja |
Anforderungsobjekt
Jede Anforderung verfügt über die folgenden Eigenschaften:
| Eigentum | BESCHREIBUNG | Erforderlich | Standardwert | Beispielwert |
|---|---|---|---|---|
url |
Absolute URL zu einem API-Endpunkt, auf den geantwortet werden soll | ja | https://jsonplaceholder.typicode.com/posts |
|
method |
HTTP-Verb, das zum Abgleichen der Anforderung mit url |
nein | GET |
GET |
nth |
Antworten Sie nur auf die abgefangene nth-Anforderung, die dem Simulierten methodentspricht, urlund bodyFragment |
nein | 2 |
|
bodyFragment |
Eine Zeichenfolge, die im Anforderungstext vorhanden sein soll | nein | foo |
Bemerkungen
Verwenden Sie sternchen (*) in der url Eigenschaft, wenn Sie einer Reihe von Zeichen in der URL entsprechen möchten. Beispielsweise entspricht https://jsonplaceholder.typicode.com/*https://jsonplaceholder.typicode.com/posts und https://jsonplaceholder.typicode.com/comments. Zur Laufzeit konvertiert Dev Proxy jeden * in einen regulären Ausdruck .*.
Dev Proxy ignoriert den Fall beim Abgleichen der url Eigenschaft mit der Anforderungs-URL. Beispiel: Ein Modell für https://jsonplaceholder.typicode.com/Posts übereinstimmungt mit einer Anforderung an https://jsonplaceholder.typicode.com/posts. Wenn Sie mehrere Modelle für dieselbe Methode mit URLs definieren, die sich nur bei der Groß-/Kleinschreibung unterscheiden, verwendet Dev Proxy das erste übereinstimmende Modell.
Platzieren Sie beim Definieren von Mocks zuerst die spezifischesten Modelle. Wenn Sie beispielsweise zwei Modelle haben, eine für https://jsonplaceholder.typicode.com/posts und eine für https://jsonplaceholder.typicode.com/*, platzieren Sie das erste Modell zuerst. Andernfalls entspricht Dev Proxy dem zweiten Modell zuerst und gibt die Antwort für https://jsonplaceholder.typicode.com/* alle Anforderungen zurück.
Verwenden Sie die nth Eigenschaft, wenn Sie eine andere Antwort an dieselbe Anforderungs-URL senden müssen. Verwenden Sie sie beispielsweise, um einen lang andauernden Vorgang zu simulieren. Wenn Sie die API zum ersten Mal aufrufen, wird eine Antwort mit einer inprogress Nachricht zurückgegeben. Wenn Sie die API zum zweiten Mal aufrufen, wird eine Antwort mit der completed Nachricht zurückgegeben. Dev Proxy zählt jede abgefangene Anforderung, die mit dem Modell methodurlübereinstimmt, und bodyFragmentgibt an, ob sie eine simulierte Antwort für sie zurückgibt. Sie benötigen kein Fallback-Modell für dieselbe URL: Wenn kein Modell auf eine Anforderung angewendet wird, übergibt Dev Proxy es an die API. Weitere Informationen zur nth Eigenschaft finden Sie unter Mock nth request.
Mithilfe der bodyFragment Eigenschaft können Sie Anforderungen basierend auf dem Textinhalt abgleichen. Wenn Sie beispielsweise Anforderungen abgleichen möchten, die die foo Zeichenfolge im Textkörper enthalten, legen Sie die bodyFragment Eigenschaft auf foo. Dev Proxy verwendet bodyFragment nur für andere Anforderungen als GET.
Antwortobjekt
Jede Antwort weist die folgenden Eigenschaften auf:
| Eigentum | BESCHREIBUNG | Erforderlich | Standardwert | Beispielwert |
|---|---|---|---|---|
body |
Textkörper, der als Antwort auf die Anforderung gesendet werden soll | nein | leer | { "foo": "bar" } |
statusCode |
Antwort-HTTP-Statuscode | nein | 200 |
404 |
headers |
Array von Kopfzeilen, die in die Antwort eingeschlossen werden sollen | nein | leer | [{ name: "content-type", "value": "application/json" }] |
Bemerkungen
Wenn Sie die body Eigenschaft auf ein JSON-Objekt oder array festlegen, serialisiert Dev Proxy sie in JSON. Wenn Sie die Zeichenfolge auf eine Zeichenfolge festlegen, sendet Dev Proxy die Zeichenfolge as-isohne umgebende Anführungszeichen. Verwenden Sie einen Zeichenfolgentext, um nur Text, HTML, XML oder andere Nicht-JSON-Inhalte zurückzugeben. Da Dev Proxy standardmäßig die content-type Kopfzeile application/jsonhat, legen Sie auch die Kopfzeile so fest, dass sie content-type mit Ihren Inhalten übereinstimmt, z. B text/plain. .
Wenn Sie binäre Daten zurückgeben möchten, legen Sie die Eigenschaft auf einen Zeichenfolgenwert fest, der body mit @ dem Dateipfad relativ zur Mocks-Datei beginnt. Gibt beispielsweise @picture.jpg das in der picture.jpg Datei gespeicherte Bild im selben Verzeichnis wie die Mocks-Datei zurück.
Verwenden Sie @request.body.* Platzhalter im Antworttext, um Anforderungsdaten in der Antwort zu spiegeln. Gibt beispielsweise @request.body.displayName den Wert der displayName Eigenschaft aus dem Anforderungstext zurück. Dieses Feature funktioniert mit geschachtelten Objekten und Arrays, sodass Sie dynamische Antworten erstellen können, die die eingehenden Anforderungsdaten widerspiegeln. Der Platzhalterersatz unterstützt verschiedene JSON-Werttypen, einschließlich Zeichenfolgen, Zahlen, Booleans und komplexen Objekten.