RewritePlugin

Írja át a kéréseket.

Képernyőkép egy parancssorról, amelyen a Dev Proxy újraír egy bejövő API-kérést.

Példa konfigurációra

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

Konfigurációs tulajdonságok

Tulajdonság Leírás Alapértelmezett
rewritesFile Az újraírási definíciókat tartalmazó fájl elérési útja rewrites.json

Parancssori beállítások

Egyik sem

Példák átírása fájlra

Az alábbiakban példákat láthat a szabályok újraírására.

Az összes kérés átírása HTTP-ről HTTPS-re

Írja át a HTTP-ről a HTTPS-re irányuló összes kérést. Ebben a kontextusban minden a Dev Proxyval vagy a RewritePluginnel konfigurált összes kérést jelenti.

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

Kérelemfejléc beállítása

Állítsa be a Accept-Language fejlécet az összes kéréshez https://api.contoso.com. Ha a kérelem már rendelkezik a fejléccel, a beépülő modul lecseréli az értékét. Ha a fejléc hiányzik, a beépülő modul hozzáadja. Mivel a szabály nem ad meg kimenő URL-címet, a beépülő modul nem módosítja a kérelem URL-címét.

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

Kérések átírása egy környezeti változó URL-címére

Írja át a https://api.contoso.com környezeti változóban API_BASE_URL tárolt alap URL-címre irányuló kéréseket, megőrizve az elérési út többi részét.

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

Fájltulajdonságok szimulálása

Tulajdonság Leírás Kötelező
rewrites Újraírási objektumok tömbje , amelyek meghatározzák az átírási szabályok listáját, amelyeket a RewritePlugin az általa elfogott kérelmekre alkalmaz igen

Objektum újraírása

Minden átírási szabály a következő tulajdonságokkal rendelkezik:

Tulajdonság Leírás Kötelező
in Írja át a mintát a bejövő kérésnek megfelelően. igen
out Minta átírása a kérés újraírásához igen

Megjegyzések

Ha az Újraírásplugin elfogására irányuló kérés nem felel meg a mintában definiált összes tulajdonságnak, a beépülő modul nem alkalmazza az újraírási szabályt a kérelemre.

Minta újraírása

Minden újraírási minta a következő tulajdonságokkal rendelkezik:

Tulajdonság Leírás Kötelező Alapértelmezett érték Mintaérték
url A mintában az a reguláris kifejezés, amelyet a beépülő modul az URL-címre alkalmaz. A kimenő mintában az URL-cím a kérés újraírásához. Ha kihagyja a kimenő mintában, a beépülő modul nem módosítja a kérelem URL-címét. Igen be, nincs befelé ^http://(.*)
headers A kérelem fejléceinek tömbje , amely a kérelemre van állítva. Csak a kimenő mintában támogatott. no

Megjegyzések

A kimenő mintának meg kell adnia url, headersvagy mindkettőt.

Ha rögzített csoportokat használ a reguláris kifejezésben a mintákban , hivatkozhat rájuk a kimenő mintában. Ha például át szeretné írni http://example.com/foohttps://example.com/foo, a következő átírási szabályt használhatja:

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

A kimenő URL-címben a szintaxis használatával hivatkozhat a környezeti változókra ${env:VAR_NAME} . A Dev Proxy beszúrja a as-iskörnyezeti változó értékét, így az érték a mintából származó csoportok rögzítésére is hivatkozhat. A Dev Proxy csak a mintának megfelelő kérések esetén oldja fel a környezeti változókat, és nem bontja ki a környezeti változókat a mintában . Ha a hivatkozott környezeti változó nincs beállítva, a Dev Proxy naplóz egy hibát, és kihagyja az újraírási szabályt.

Kérések fejrész

Minden kérelemfejléc a következő tulajdonságokkal rendelkezik:

Tulajdonság Leírás Kötelező
name A kérelem fejlécének neve igen
value A kérelemfejléchez beállítandó érték igen

Megjegyzések

A beépülő modul érzéketlenül egyezik a fejlécnevek nevével. Ha a kérelem már rendelkezik a fejléccel, a beépülő modul lecseréli az értékét. Ha a fejléc hiányzik, a beépülő modul hozzáadja.

A beépülő modul csak azokra a kérelmekre állítja be a fejléceket, amelyek URL-címe megegyezik a megadott URL-mintával. A beépülő modul kiértékeli az egyezést, mielőtt az ugyanazon szabály URL-átírását alkalmazza, így amikor egy szabály újraírja az URL-címet és a fejléceket is, a fejlécek ugyanazokra a kérelmekre vonatkoznak, mint az URL-átírás.

A fejlécértékek környezeti változóira a ${env:VAR_NAME} szintaxis használatával hivatkozhat. A Dev Proxy ugyanúgy oldja fel őket, mint a kimenő URL-címben, és kihagyja az átírási szabályt, ha nincs beállítva hivatkozott környezeti változó. A fejlécértékek nem támogatják a csoportok rögzítését a mintából .