Condividi tramite


Risposte fittizie

L'uso di Dev Proxy è il modo più semplice per simulare un'API. Indipendentemente dal fatto che si stia creando il front-end e l'API non sia ancora pronta, è necessario integrare il back-end con un servizio esterno oppure testare l'applicazione con risposte diverse, Dev Proxy consente di simulare le risposte api. L'uso di Dev Proxy è molto utile perché non richiede alcuna modifica al codice dell'applicazione. Si definiscono risposte fittizie per qualsiasi API con cui l'applicazione interagisce e Dev Proxy intercetta le richieste e risponde con le risposte fittizie definite dall'utente.

Per simulare le risposte api, è necessario eseguire due operazioni:

  1. Creare un file con risposte fittizie.
  2. Configurare Dev Proxy per l'uso delle risposte fittizie.

Suggerimento

Se si usa Visual Studio Code, è consigliabile installare l'estensione Dev Proxy Toolkit. Semplifica notevolmente l'uso dei file di configurazione del proxy di sviluppo.

Creare un file con risposte fittizie

Dev Proxy simula le risposte api usando il MockResponsePlugin. Il plug-in consente di definire un set di risposte fittizie. Le simulazioni vengono definite in un file separato . Il frammento di codice seguente illustra una semplice risposta fittizia per una richiesta di GET a https://jsonplaceholder.typicode.com/posts/1.

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

Suggerimento

Anziché creare manualmente il file fittizio, è possibile usare il MockGeneratorPlugin per generare il file fittizio in base alle richieste intercettate.

Precedenza dell'ordine

Dev Proxy corrisponde ai mock nell'ordine in cui vengono definiti nel file mocks. Se si definiscono più risposte con lo stesso URL e metodo, Dev Proxy usa la prima risposta corrispondente.

Quando usi la configurazione seguente, il proxy risponde a tutte le richieste GET a https://graph.microsoft.com/v1.0/me/photo con 500 Internal Server Error.

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

Supporto wildcard

Dev Proxy supporta l'uso di caratteri jolly nella proprietà URL. È possibile usare il carattere asterisco (*) per trovare le corrispondenze con qualsiasi serie di caratteri nell'URL.

Quando si usa la configurazione seguente, Dev Proxy risponde a tutte le richieste per ottenere il profilo di qualsiasi utente con la stessa risposta.

{
  "$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/*"
      },
      "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"
        }
      }
    }
  ]
}

Quando si usa la configurazione seguente, Dev Proxy restituisce la stessa immagine dal disco quando si richiede di ottenere il file binario della foto di un utente.

{
  "$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"
      },
      "response": {
        "body": "@picture.jpg",
        "headers": [
          {
            "name": "content-type",
            "value": "image/jpeg"
          }
        ]
      }
    }
  ]
}

Quando si usa la configurazione seguente, Dev Proxy restituisce la stessa risposta quando si richiede di ottenere il profilo dell'utente corrente con qualsiasi parametro della stringa di query.

{
  "$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?*"
      },
      "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"
        }
      }
    }
  ]
}

Rispondere con il contenuto di un file

Per mantenere pulito e organizzato il file fittizio, è possibile archiviare il contenuto della risposta in un file separato e farvi riferimento nel file fittizio. Per indicare a Dev Proxy di caricare il corpo della risposta fittizia da un file, impostare la proprietà body su @ seguito dal percorso del file relativo al file fittizio.

Ad esempio, la configurazione della risposta fittizia seguente indica a Dev Proxy di rispondere a qualsiasi richiesta di https://graph.microsoft.com/v1.0/me con il contenuto del file response.json che si trova nella stessa cartella del file fittizio.

{
  "$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": "@response.json",
        "headers": [
          {
            "name": "content-type",
            "value": "application/json; odata.metadata=minimal"
          }
        ]
      }
    }
  ]
}

L'uso del token @funziona con file di testo e file binari .

Configurare Dev Proxy per l'uso delle risposte fittizie

Dopo aver creato il file mocks, è necessario configurare Dev Proxy per usare le risposte fittizie. Per configurare Dev Proxy per le risposte fittizie, aggiungere il MockResponsePlugin all'elenco dei plug-in nel file devproxyrc.

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

Prima di tutto, aggiungi il MockResponsePlugin all'elenco dei plug-in. Si include un riferimento alla relativa sezione di configurazione in cui si specifica il percorso del file fittizio.

Quando si avvia Dev Proxy, legge il file fittizio e usa le risposte fittizie per rispondere alle richieste che corrispondono alle simulazioni definite.

Supporto per richieste non simulate

Dev Proxy supporta la creazione di un errore quando il proxy intercetta una richiesta non rilevata. La possibilità di non eseguire il failover delle richieste non rilevate è utile per identificare le richieste perse nel file fittizio.

Per abilitare questa funzionalità, aggiungere e abilitare l'impostazione blockUnmockedRequests su MockResponsePlugin sezione config nel file devproxyrc.

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

Quando Dev Proxy intercetta una richiesta che non può simulare, restituisce una risposta 502 Bad Gateway.

Passaggio successivo

Altre informazioni su MockResponsePlugin.

Campioni

Vedere anche gli esempi correlati di Dev Proxy: