PřepsáníPlugin

Přepíše požadavky.

Snímek obrazovky s příkazovým řádkem s přepisem příchozího požadavku rozhraní API na dev proxy serveru

Příklad konfigurace

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

Vlastnosti konfigurace

Vlastnost Popis Výchozí
rewritesFile Cesta k souboru obsahujícímu definice přepsání rewrites.json

Možnosti příkazového řádku

Nic

Příklady přepsání souborů

Následuje příklad přepisování pravidel.

Přepsání všech požadavků z HTTP na HTTPS

Přepište všechny požadavky z HTTP na HTTPS. V tomto kontextu všechny požadavky nakonfigurované pomocí dev proxy serveru nebo 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"
      }
    }
  ]
}

Nastavení hlavičky požadavku

Nastavte hlavičku Accept-Language u všech požadavků na https://api.contoso.com. Pokud již požadavek obsahuje hlavičku, modul plug-in nahradí jeho hodnotu. Pokud záhlaví chybí, modul plug-in ho přidá. Vzhledem k tomu, že pravidlo nezadá výstupní adresu URL, modul plug-in nezmění adresu URL požadavku.

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

Přepsání požadavků na adresu URL z proměnné prostředí

Přepište požadavky na https://api.contoso.com základní adresu URL uloženou API_BASE_URL v proměnné prostředí a zachováte zbytek cesty.

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

Napodobení vlastností souboru

Vlastnost Popis Povinní účastníci
rewrites Pole přepsat objekty, které definují seznam pravidel přepsání, která rewritePlugin platí pro požadavky, které zachytí ano

Přepsání objektu

Každé pravidlo přepsání má následující vlastnosti:

Vlastnost Popis Povinní účastníci
in Přepište vzor tak, aby odpovídal příchozímu požadavku. ano
out Přepsání vzoru pro přepsání požadavku ano

Poznámky

Pokud požadavek, který rewritePlugin zachytí, neodpovídá všem vlastnostem definovaným v vzoru, modul plug-in na požadavek nepoužije pravidlo přepsání.

Přepsat vzor

Každý vzor přepsání má následující vlastnosti:

Vlastnost Popis Povinní účastníci Výchozí hodnota Ukázková hodnota
url V vzoru regulární výraz, který modul plug-in použije na adresu URL. V out vzoru adresa URL pro přepsání požadavku na. Pokud ho vynecháte ve vzoru out , modul plug-in nezmění adresu URL požadavku. Ano in, ne ven ^http://(.*)
headers Pole hlaviček požadavků , které se mají nastavit v požadavku. Podporováno pouze ve vzoru out . no

Poznámky

Výstupní vzor musí určovat url, headersnebo obojí.

Pokud používáte skupiny zachycení v regulárním výrazu ve vzorech, můžete je odkazovat ve vzorci ven. Pokud například chcete přepisovat http://example.com/foohttps://example.com/foo, můžete použít následující pravidlo přepsání:

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

V adrese URL out můžete odkazovat na proměnné prostředí pomocí ${env:VAR_NAME} syntaxe. Dev Proxy vloží hodnotu proměnné prostředí as-is, takže hodnota může odkazovat také na skupiny zachycení ze vzoru. Dev Proxy překládá proměnné prostředí pouze pro požadavky, které odpovídají vzoru, a nerozbaluje proměnné prostředí ve vzoru. Pokud odkazovaná proměnná prostředí není nastavená, dev proxy zaznamená chybu a přeskočí pravidlo přepsání.

Hlavička požadavku

Každá hlavička požadavku má následující vlastnosti:

Vlastnost Popis Povinní účastníci
name Název hlavičky požadavku ano
value Hodnota nastavená pro hlavičku požadavku ano

Poznámky

Modul plug-in odpovídá názvům hlaviček bez rozlišování velkých a malých písmen. Pokud již požadavek obsahuje hlavičku, modul plug-in nahradí jeho hodnotu. Pokud záhlaví chybí, modul plug-in ho přidá.

Modul plug-in nastavuje hlavičky pouze u požadavků, jejichž adresa URL odpovídá vzoru adresy URL. Modul plug-in vyhodnotí shodu předtím, než použije přepsání adresy URL stejného pravidla, takže když pravidlo přepíše adresu URL i hlavičky, budou hlavičky platit pro stejné požadavky jako přepsání adresy URL.

Proměnné prostředí můžete odkazovat v hodnotách hlaviček pomocí ${env:VAR_NAME} syntaxe. Dev Proxy je přeloží stejným způsobem jako v adrese URL pro out a přeskočí pravidlo přepsání, pokud není nastavená odkazovaná proměnná prostředí. Hodnoty hlaviček nepodporují skupiny zachycení ze vzoru.