GenericRandomErrorPlugin

Le richieste hanno esito negativo con un errore selezionato casuale dal file contenente errori fittizi.

Screenshot di un prompt dei comandi con il proxy di sviluppo simulando uno degli errori per una richiesta API OpenAI, come definito nel file di configurazione.

Esempio di configurazione

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "genericRandomErrorPlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.openai.com/*"
  ],
  "genericRandomErrorPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/genericrandomerrorplugin.schema.json",
    "errorsFile": "errors.json"
  }
}

Proprietà di configurazione

Proprietà Descrizione Predefinito
errorsFile Percorso del file che contiene risposte di errore. errors.json
rate Percentuale di richieste che non riescono con un errore casuale. Valore compreso tra 0 e 100. 50
retryAfterInSeconds Numero di secondi di attesa prima di ripetere la richiesta. Incluso nell'intestazione della risposta Retry-After per la limitazione dinamica. 5

Opzioni della riga di comando

Nome Descrizione Predefinito
-f, --failure-rate <failure rate> Percentuale di richieste che non riescono con un errore casuale. Valore compreso tra 0 e 100. 50

Osservazioni:

Corpo della risposta

Se si imposta la body proprietà di una risposta di errore a un oggetto JSON o a una matrice, Dev Proxy la serializza in JSON. Se lo si imposta su una stringa, Dev Proxy invia la stringa as-is, senza virgolette circostanti. Una stringa che inizia con @ viene considerata come un percorso di un file, rispetto al file degli errori, con il corpo della risposta. Poiché Dev Proxy imposta per impostazione predefinita l'intestazione Content-Type su application/json, impostare l'intestazione Content-Type in modo che corrisponda al contenuto quando si restituisce contenuto non JSON, ad esempio text/plain.

Valori per risposta Retry-After

Il proxy di sviluppo viene @dynamic risolto nell'intestazione Retry-After per qualsiasi codice di stato, ad esempio 429, 503o 529. Corrisponde al nome dell'intestazione indipendentemente dalla distinzione tra maiuscole e minuscole. Quando risolve @dynamic, registra anche la richiesta con RetryAfterPlugin, che segnala le richieste inviate dall'app prima dell'ora Retry-After di inattività.

Per impostazione predefinita, l'intestazione Retry-After usa il valore globale retryAfterInSeconds . È possibile eseguire l'override di questo valore in base alla risposta usando la @dynamic=N sintassi nel file delle risposte agli errori, dove N è il numero di secondi di attesa prima di riprovare.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/genericrandomerrorplugin.errorsfile.schema.json",
  "errors": [
    {
      "request": {
        "url": "https://api.openai.com/*"
      },
      "responses": [
        {
          "statusCode": 429,
          "headers": [
            {
              "name": "Retry-After",
              "value": "@dynamic=17"
            }
          ],
          "body": {
            "error": {
              "message": "Rate limit exceeded. Wait 17 seconds."
            }
          }
        }
      ]
    }
  ]
}

In questo esempio l'intestazione Retry-After usa secondi 17 per questa risposta, indipendentemente dall'impostazione globale retryAfterInSeconds . Il valore aumenta in ogni richiesta limitata successiva, come con il token normale @dynamic .

Intestazione predefinita Content-Type

Se una risposta di errore ha e body non definisce un'intestazione Content-Type , Dev Proxy restituisce la risposta con l'intestazione Content-Type: application/json . Per restituire un tipo di contenuto diverso, aggiungere l'intestazione Content-Type alla risposta nel file degli errori. Dev Proxy usa il valore specificato.

Passo successivo