RewritePlugin

Schreibt Anforderungen neu.

Screenshot einer Eingabeaufforderung mit Dev Proxy-Umschreibung einer eingehenden API-Anforderung.

Konfigurationsbeispiel

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

Konfigurationseigenschaften

Eigenschaft BESCHREIBUNG Standard
rewritesFile Pfad zur Datei mit Umschreibdefinitionen rewrites.json

Befehlszeilenoptionen

Keine

Neuschreiben von Dateibeispielen

Im Folgenden sind Beispiele für Neuschreibregeln aufgeführt.

Alle Anforderungen von HTTP in HTTPS umschreiben

Schreiben Sie alle Anforderungen von HTTP in HTTPS um. In diesem Zusammenhang bedeutet alles alle Anforderungen, die mit Dev Proxy oder rewritePlugin konfiguriert wurden.

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

Festlegen eines Anforderungsheaders

Legen Sie den Accept-Language Header für alle Anforderungen auf https://api.contoso.com. Wenn die Anforderung bereits über den Header verfügt, ersetzt das Plug-In seinen Wert. Wenn der Header fehlt, fügt es das Plug-In hinzu. Da die Regel keine Ausgabe-URL angibt, ändert das Plug-In die Anforderungs-URL nicht.

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

Erneutes Schreiben von Anforderungen an eine URL aus einer Umgebungsvariable

Schreiben Sie Anforderungen an https://api.contoso.com die in der Umgebungsvariable API_BASE_URL gespeicherte Basis-URL neu, wobei der Rest des Pfads erhalten bleibt.

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

Simuliert Dateieigenschaften

Eigenschaft BESCHREIBUNG Erforderlich
rewrites Array von Neuschreibobjekten , die die Liste der Neuschreibregeln definieren, die vom RewritePlugin auf die Anforderungen angewendet werden, die sie abfangen ja

Rewrite-Objekt

Jede Neuschreibregel weist die folgenden Eigenschaften auf:

Eigenschaft BESCHREIBUNG Erforderlich
in Schreiben Sie das Muster neu, um der eingehenden Anforderung zu entsprechen. ja
out Neuschreiben des Musters zum Umschreiben der Anforderung ja

Hinweise

Wenn die Anforderung, die der RewritePlugin abfangen soll, nicht mit allen eigenschaften übereinstimmt, die im Muster definiert sind, wendet das Plug-In die Rewrite-Regel nicht auf die Anforderung an.

Muster neu schreiben

Jedes Neuschreibmuster weist die folgenden Eigenschaften auf:

Eigenschaft BESCHREIBUNG Erforderlich Standardwert Beispielwert
url Im Muster gilt der reguläre Ausdruck, den das Plug-In auf die URL anwendet. Url zum Umschreiben der Anforderung in das Out-Muster . Wenn Sie es im Ausgabemuster weglassen, ändert das Plug-In die Anforderungs-URL nicht. ja in, nein in out ^http://(.*)
headers Array von Anforderungsheadern , die für die Anforderung festgelegt werden sollen. Wird nur im Out-Muster unterstützt. nein

Hinweise

Das Ausgabemuster muss oder headersbeides angebenurl.

Wenn Sie Aufnahmegruppen im regulären Ausdruck in den Mustern verwenden, können Sie im Out-Muster darauf verweisen. Wenn Sie z. B. neu schreiben http://example.com/foohttps://example.com/foomöchten, können Sie die folgende Neuschreibregel verwenden:

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

In der Ausgabe-URL können Sie mithilfe der ${env:VAR_NAME} Syntax auf Umgebungsvariablen verweisen. Dev Proxy fügt den Wert der Umgebungsvariablen as-isein, sodass der Wert auch auf Die Erfassungsgruppen aus dem Muster verweisen kann. Dev Proxy löst Umgebungsvariablen nur für Anforderungen auf, die dem Muster entsprechen, und erweitert umgebungsvariablen im Muster nicht. Wenn keine Referenzumgebungsvariable festgelegt ist, protokolliert Dev Proxy einen Fehler und überspringt die Neuschreibregel.

Anforderungs-Header

Jeder Anforderungsheader verfügt über die folgenden Eigenschaften:

Eigenschaft BESCHREIBUNG Erforderlich
name Name des Anforderungsheaders ja
value Wert, der für den Anforderungsheader festgelegt werden soll ja

Hinweise

Das Plug-In gleicht Kopfzeilennamen ohne Groß-/Kleinschreibung ab. Wenn die Anforderung bereits über den Header verfügt, ersetzt das Plug-In seinen Wert. Wenn der Header fehlt, fügt es das Plug-In hinzu.

Das Plug-In legt Header nur für Anforderungen fest, deren URL mit dem in URL-Muster übereinstimmt. Das Plug-In wertet die Übereinstimmung aus, bevor die URL-Neuschreibung derselben Regel angewendet wird. Wenn eine Regel also sowohl die URL als auch die Kopfzeilen neu schreibt, gelten die Header für die gleichen Anforderungen wie das umschreibende URL.

Sie können mithilfe der ${env:VAR_NAME} Syntax auf Umgebungsvariablen in Headerwerten verweisen. Dev Proxy löst sie auf die gleiche Weise wie in der Ausgabe-URL auf und überspringt die Neuschreibregel, wenn keine Umgebungsvariable festgelegt ist. Kopfzeilenwerte unterstützen keine Erfassungsgruppen aus dem in-Muster .