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.
Definition der Plug-In-Instanz
{
"name": "MockResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mocksPlugin"
}
Konfigurationsbeispiel
{
"mocksPlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.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
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.
{
"$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": {
"@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.
{
"$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/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.
{
"$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",
"method": "GET"
},
"response": {
"body": "@picture.jpg",
"headers": [
{
"name": "content-type",
"value": "image/jpeg"
}
]
}
}
]
}
Antworten auf nth Anfrage
Antworten Sie erst nach dem zweiten Aufruf auf eine Anforderung.
{
"$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/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.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.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.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.2.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 |
Legt fest, dass der Proxy erst nach dem Abfangen der Anforderung zum n-ten Zeitpunkt antworten soll. | 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 .*.
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 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. 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 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.