Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Simula le risposte.
Definizione dell'istanza del plug-in
{
"name": "MockResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mocksPlugin"
}
Esempio di configurazione
{
"mocksPlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.schema.json",
"mocksFile": "mocks.json"
}
}
Proprietà di configurazione
| Proprietà | Descrizione | Predefinito |
|---|---|---|
mocksFile |
Percorso del file contenente risposte fittizie | mocks.json |
blockUnmockedRequests |
Risposta restituita 502 Bad Gateway per le richieste non fittizie |
false |
Opzioni della riga di comando
| Nome | Descrizione | Predefinito |
|---|---|---|
-n, --no-mocks |
Disabilitare il caricamento di richieste fittizie | false |
--mocks-file |
Percorso del file contenente risposte fittizie | - |
Esempi di file fittizi
Di seguito sono riportati esempi di oggetti fittizi.
Rispondere con il corpo
Risposta a una richiesta con una risposta 200 OK e un corpo JSON.
{
"$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"
}
]
}
}
]
}
Rispondere con errore
Rispondere a una richiesta con una risposta 404 Non trovato.
{
"$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
}
}
]
}
Rispondere con dati binari
Rispondere a una richiesta con un'immagine binaria caricata da un file su disco.
{
"$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"
}
]
}
}
]
}
Rispondere su nth richiesta
Rispondere a una richiesta solo dopo la seconda chiamata.
{
"$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
}
}
}
]
}
Rispondere alla corrispondenza del corpo della richiesta
Rispondere a una richiesta che contiene una stringa specifica nel corpo.
{
"$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..."
}
}
}
]
}
Eseguire il mirroring dei dati della richiesta in risposta
Rispondere con i dati che rispecchiano i valori del corpo della richiesta usando @request.body.* segnaposto.
{
"$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"
}
]
}
}
]
}
Data la richiesta seguente:
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"
}
La risposta è:
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
}
Simula le proprietà del file
| Proprietà | Descrizione | Obbligatorio |
|---|---|---|
request |
Oggetto richiesta che definisce la richiesta di risposta | Sì |
response |
Oggetto risposta che definisce la risposta da restituire | Sì |
Oggetto della richiesta
Ogni richiesta ha le proprietà seguenti:
| Proprietà | Descrizione | Obbligatorio | Valore predefinito | Valore di esempio |
|---|---|---|---|---|
url |
URL assoluto di un endpoint API a cui rispondere | Sì | https://jsonplaceholder.typicode.com/posts |
|
method |
Verbo HTTP usato per trovare una corrispondenza con la richiesta url |
No | GET |
GET |
nth |
Determina che il proxy deve rispondere solo dopo l'intercettazione della richiesta per l'ennesima volta | No | 2 |
|
bodyFragment |
Stringa che deve essere presente nel corpo della richiesta | No | foo |
Osservazioni:
Usare l'asterisco (*) nella url proprietà se si desidera trovare una corrispondenza con qualsiasi serie di caratteri nell'URL. Ad esempio, https://jsonplaceholder.typicode.com/* corrisponde https://jsonplaceholder.typicode.com/posts a e https://jsonplaceholder.typicode.com/comments. In fase di esecuzione, Dev Proxy converte ognuno * in un'espressione .*regolare.
Quando si definiscono simulazioni, posizionare prima le simulazioni più specifiche. Ad esempio, se sono presenti due simulazioni, una per https://jsonplaceholder.typicode.com/posts e una per https://jsonplaceholder.typicode.com/*, posizionare prima la prima simulazione. In caso contrario, Dev Proxy corrisponde al secondo mock first e restituisce la risposta per https://jsonplaceholder.typicode.com/* tutte le richieste.
Usare la nth proprietà se è necessario inviare un valore diverso allo stesso URL della richiesta. Ad esempio, usarlo per simulare un'operazione a esecuzione prolungata. La prima volta che si chiama l'API, viene restituita una risposta con un inprogress messaggio. La seconda volta che si chiama l'API, viene restituita una risposta con il completed messaggio . Per altre informazioni sulla proprietà, vedere Mock nth request .For more information about the nth property, see Mock nth request.
Usando la bodyFragment proprietà , è possibile associare le richieste in base al contenuto del corpo. Ad esempio, se si desidera trovare una corrispondenza con le richieste che contengono la foo stringa nel corpo, impostare la bodyFragment proprietà su foo. Dev Proxy usa bodyFragment solo per le richieste diverse da GET.
Oggetto Response
Ogni risposta ha le proprietà seguenti:
| Proprietà | Descrizione | Obbligatorio | Valore predefinito | Valore di esempio |
|---|---|---|---|---|
body |
Corpo da inviare come risposta alla richiesta | No | vuoto | { "foo": "bar" } |
statusCode |
Codice di stato HTTP di risposta | No | 200 |
404 |
headers |
Matrice di intestazioni da includere nella risposta | No | vuoto | [{ name: "content-type", "value": "application/json" }] |
Osservazioni:
Se si desidera restituire dati binari, impostare la body proprietà su un valore stringa che inizia con @ seguito dal percorso del file rispetto al file fittizio. Ad esempio, restituisce @picture.jpg l'immagine archiviata nel picture.jpg file nella stessa directory del file fittizio.
Per eseguire il mirroring dei dati della richiesta nella risposta, usare @request.body.* i segnaposto nel corpo della risposta. Ad esempio, restituisce @request.body.displayName il valore della displayName proprietà dal corpo della richiesta. Questa funzionalità funziona con oggetti e matrici annidati, consentendo di creare risposte dinamiche che riflettono i dati delle richieste in ingresso. La sostituzione del segnaposto supporta vari tipi di valori JSON, tra cui stringhe, numeri, valori booleani e oggetti complessi.