Plug-in herschrijven

Herschrijft aanvragen.

Schermopname van een opdrachtprompt met Dev Proxy die een binnenkomende API-aanvraag herschrijft.

Configuratievoorbeeld

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

Configuratie-eigenschappen

Eigenschappen Beschrijving Standaard
rewritesFile Pad naar het bestand met herschrijfdefinities rewrites.json

Opdrachtregelopties

Geen

Voorbeelden van herschrijven van bestanden

Hieronder volgen voorbeelden van herschrijfregels.

Alle aanvragen van HTTP naar HTTPS herschrijven

Herschrijf alle aanvragen van HTTP naar HTTPS. In deze context betekent alles alle aanvragen die zijn geconfigureerd met Dev Proxy of 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"
      }
    }
  ]
}

Een aanvraagheader instellen

Stel de Accept-Language header voor alle aanvragen in op https://api.contoso.com. Als de aanvraag al de header heeft, vervangt de invoegtoepassing de waarde ervan. Als de header ontbreekt, wordt deze door de invoegtoepassing toegevoegd. Omdat de regel geen out-URL opgeeft, wordt de aanvraag-URL niet gewijzigd door de invoegtoepassing.

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

Aanvragen herschrijven naar een URL vanuit een omgevingsvariabele

Herschrijf aanvragen naar https://api.contoso.com de basis-URL die is opgeslagen in de API_BASE_URL omgevingsvariabele, waarbij de rest van het pad behouden blijft.

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

Eigenschappen van mocks-bestanden

Eigenschappen Beschrijving Vereist
rewrites Matrix van herschrijfobjecten die de lijst met herschrijfregels definieert die de RewritePlugin toepast op de aanvragen die worden onderschept ja

Object herschrijven

Elke herschrijfregel heeft de volgende eigenschappen:

Eigenschappen Beschrijving Vereist
in Herschrijfpatroon zodat deze overeenkomt met de binnenkomende aanvraag. ja
out Patroon herschrijven om de aanvraag opnieuw te schrijven ja

Opmerkingen

Als de aanvraag die de RewritePlugin onderschept, niet overeenkomt met alle eigenschappen die in het patroon zijn gedefinieerd, past de invoegtoepassing de herschrijfregel niet toe op de aanvraag.

Patroon herschrijven

Elk herschrijfpatroon heeft de volgende eigenschappen:

Eigenschappen Beschrijving Vereist Standaardwaarde Voorbeeldwaarde
url In het patroon is de reguliere expressie die de invoegtoepassing van toepassing is op de URL. In het out-patroon moet u de URL waarnaar u de aanvraag wilt herschrijven. Als u deze weglaat in het out-patroon , verandert de invoegtoepassing de aanvraag-URL niet. Ja in, nee in uit ^http://(.*)
headers Matrix van aanvraagheaders die moeten worden ingesteld voor de aanvraag. Alleen ondersteund in het out-patroon . no

Opmerkingen

Het out-patroon moet opgeven url, headersof beide.

Als u capture-groepen gebruikt in de reguliere expressie in de patronen , kunt u ernaar verwijzen in het out-patroon . Als u bijvoorbeeld wilt herschrijven http://example.com/foohttps://example.com/foo, kunt u de volgende herschrijfregel gebruiken:

{
  "$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 de uitgaande URL kunt u verwijzen naar omgevingsvariabelen met behulp van de ${env:VAR_NAME} syntaxis. Dev Proxy voegt de waarde in van de omgevingsvariabele as-is, zodat de waarde ook kan verwijzen naar het vastleggen van groepen uit het patroon . Dev Proxy lost omgevingsvariabelen alleen op voor aanvragen die overeenkomen met het patroon en breidt omgevingsvariabelen niet uit in het patroon . Als een omgevingsvariabele waarnaar wordt verwezen niet is ingesteld, registreert Dev Proxy een fout en slaat de herschrijfregel over.

Header van het verzoek

Elke aanvraagheader heeft de volgende eigenschappen:

Eigenschappen Beschrijving Vereist
name Naam van de aanvraagheader ja
value Waarde die moet worden ingesteld voor de aanvraagheader ja

Opmerkingen

De invoegtoepassing komt overeen met headernamen hoofdlettergevoelig. Als de aanvraag al de header heeft, vervangt de invoegtoepassing de waarde ervan. Als de header ontbreekt, wordt deze door de invoegtoepassing toegevoegd.

De invoegtoepassing stelt alleen headers in voor aanvragen waarvan de URL overeenkomt met het URL-patroon . De invoegtoepassing evalueert de overeenkomst voordat de URL opnieuw wordt geschreven van dezelfde regel, dus wanneer een regel zowel de URL als headers herschrijft, zijn de headers van toepassing op dezelfde aanvragen als het herschrijven van de URL.

U kunt verwijzen naar omgevingsvariabelen in headerwaarden met behulp van de ${env:VAR_NAME} syntaxis. Dev Proxy lost deze op dezelfde manier op als in de out-URL en slaat de herschrijfregel over als er geen omgevingsvariabele waarnaar wordt verwezen, is ingesteld. Headerwaarden bieden geen ondersteuning voor capture-groepen van het in-patroon .