RiscriverePlugin

Riscrive le richieste.

Screenshot di un prompt dei comandi con Dev Proxy che riscrive una richiesta API in ingresso.

Esempio di configurazione

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "RewritePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "rewritePlugin"
    }
  ],
  "rewritePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rewriteplugin.schema.json",
    "rewritesFile": "rewrites.json"
  }
}

Proprietà di configurazione

Proprietà Descrizione Valore predefinito
rewritesFile Percorso del file contenente definizioni di riscrittura rewrites.json

Opzioni della riga di comando

Nessuno

Esempi di file di riscrittura

Di seguito sono riportati esempi di regole di riscrittura.

Riscrivere tutte le richieste da HTTP a HTTPS

Riscrivere tutte le richieste da HTTP a HTTPS. In questo contesto, tutte le richieste configurate con Dev Proxy o RewritePlugin.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rewriteplugin.rewritesfile.schema.json",
  "rewrites": [
    {
      "in": {
        "url": "^http://(.*)"
      },
      "out": {
        "url": "https://$1"
      }
    }
  ]
}

Impostare un'intestazione di richiesta

Impostare l'intestazione Accept-Language su tutte le richieste su https://api.contoso.com. Se la richiesta ha già l'intestazione, il plug-in ne sostituisce il valore. Se l'intestazione non è presente, il plug-in lo aggiunge. Poiché la regola non specifica un URL out , il plug-in non modifica l'URL della richiesta.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rewriteplugin.rewritesfile.schema.json",
  "rewrites": [
    {
      "in": {
        "url": "^https://api\\.contoso\\.com/"
      },
      "out": {
        "headers": [
          {
            "name": "Accept-Language",
            "value": "nl-NL"
          }
        ]
      }
    }
  ]
}

Riscrivere le richieste a un URL da una variabile di ambiente

Riscrivere le richieste all'URL https://api.contoso.com di base archiviato nella API_BASE_URL variabile di ambiente, mantenendo il resto del percorso.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rewriteplugin.rewritesfile.schema.json",
  "rewrites": [
    {
      "in": {
        "url": "^https://api\\.contoso\\.com/(.*)"
      },
      "out": {
        "url": "${env:API_BASE_URL}/$1"
      }
    }
  ]
}

Simula le proprietà del file

Proprietà Descrizione Richiesto
rewrites Matrice di oggetti di riscrittura che definisce l'elenco di regole di riscrittura applicabili a RewritePlugin alle richieste intercettate Sì

Riscrivere l'oggetto

Ogni regola di riscrittura ha le proprietà seguenti:

Proprietà Descrizione Richiesto
in Riscrivere il modello in modo che corrisponda alla richiesta in ingresso. Sì
out Riscrivere il modello per riscrivere la richiesta Sì

Osservazioni:

Se la richiesta intercetta RewritePlugin, non corrisponde a tutte le proprietà definite nel modello in , il plug-in non applica la regola di riscrittura alla richiesta.

Riscrivere il modello

Ogni criterio di riscrittura ha le proprietà seguenti:

Proprietà Descrizione Richiesto Valore predefinito Valore di esempio
url Nel modello in espressione regolare applicata al plug-in all'URL. Nel modello out , URL in cui riscrivere la richiesta. Se lo si omette nel modello out , il plug-in non modifica l'URL della richiesta. Sì in, no in uscita ^http://(.*)
headers Matrice di intestazioni di richiesta da impostare sulla richiesta. Supportato solo nel modello out . no

Osservazioni:

Il modello out deve specificare url, headerso entrambi.

Se si usano gruppi di acquisizione nell'espressione regolare nei modelli, è possibile farvi riferimento nel modello out. Ad esempio, se si vuole riscrivere in http://example.com/foo, è possibile usare la regola di riscrittura https://example.com/foo seguente:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rewriteplugin.rewritesfile.schema.json",
  "rewrites": [
    {
      "in": {
        "url": "^http://(.*)"
      },
      "out": {
        "url": "https://$1"
      }
    }
  ]
}

Nell'URL out è possibile fare riferimento alle variabili di ambiente usando la ${env:VAR_NAME} sintassi . Dev Proxy inserisce il valore della variabile di ambiente as-is, in modo che il valore possa anche fare riferimento ai gruppi di acquisizione dal modello in . Dev Proxy risolve le variabili di ambiente solo per le richieste che corrispondono al modello in e non espande le variabili di ambiente nel modello in . Se una variabile di ambiente a cui si fa riferimento non è impostata, Dev Proxy registra un errore e ignora la regola di riscrittura.

Intestazione della richiesta

Ogni intestazione della richiesta ha le proprietà seguenti:

Proprietà Descrizione Richiesto
name Nome dell'intestazione della richiesta Sì
value Valore da impostare per l'intestazione della richiesta Sì

Osservazioni:

Il plug-in corrisponde ai nomi delle intestazioni senza distinzione tra maiuscole e minuscole. Se la richiesta ha già l'intestazione, il plug-in ne sostituisce il valore. Se l'intestazione non è presente, il plug-in lo aggiunge.

Il plug-in imposta le intestazioni solo sulle richieste il cui URL corrisponde al modello url . Il plug-in valuta la corrispondenza prima di applicare la riscrittura URL della stessa regola, quindi quando una regola riscrive sia l'URL che le intestazioni, le intestazioni si applicano alle stesse richieste della riscrittura dell'URL.

È possibile fare riferimento alle variabili di ambiente nei valori di intestazione usando la ${env:VAR_NAME} sintassi . Dev Proxy li risolve come nell'URL out e ignora la regola di riscrittura se non è impostata una variabile di ambiente a cui si fa riferimento. I valori di intestazione non supportano i gruppi di acquisizione dal modello in .