Condividi tramite


MockResponsePlugin

Simula le risposte.

Screenshot di un prompt dei comandi con Dev Proxy che simula la risposta per una richiesta all'API GitHub.

Definizione dell'istanza del plug-in

{
  "name": "MockResponsePlugin",
  "enabled": true,
  "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
  "configSection": "mocksPlugin"
}

Esempio di configurazione

{
  "mocksPlugin": {
    "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.

{
  "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 un errore

Rispondere a una richiesta con una risposta 404 Non trovato.

{
  "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.

{
  "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.

{
  "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 corrispondente al corpo della richiesta

Rispondere a una richiesta che contiene una stringa specifica nel corpo.

{
  "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..."
    }
  }
}

Mocks file properties

Proprietà Descrizione Obbligatoria
request Oggetto Request che definisce la richiesta di risposta
response Oggetto risposta che definisce la risposta da restituire

Oggetto della richiesta

Ogni richiesta ha le proprietà seguenti:

Proprietà Descrizione Obbligatoria Valore predefinito Valore di esempio
url URL assoluto a un endpoint API a cui rispondere 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'nesimo tempo no 2
bodyFragment Stringa che deve essere presente nel corpo della richiesta no foo

Commenti

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 ogni * oggetto in un'espressione .*regolare .

Quando si definiscono simulazioni, posizionare prima i mock più specifici. Ad esempio, se si hanno due mock, uno per https://jsonplaceholder.typicode.com/posts e uno per https://jsonplaceholder.typicode.com/*, posizionare il primo fittizio per primo. 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 della risposta

Ogni risposta ha le proprietà seguenti:

Proprietà Descrizione Obbligatoria Valore predefinito Valore di esempio
body Corpo da inviare come risposta alla richiesta no empty { "foo": "bar" }
statusCode Codice di stato HTTP della risposta no 200 404
headers Matrice di intestazioni da includere nella risposta no empty [{ name: "content-type", "value": "application/json" }]

Commenti

Se si desidera restituire dati binari, impostare la body proprietà su un valore stringa che inizia con seguito @ dal percorso del file relativo al file fittizio. Ad esempio, @picture.jpg restituisce l'immagine archiviata nel picture.jpg file nella stessa directory del file fittizio.