Ponowne zapisywaniePlugin

Ponownie zapisuje żądania.

Zrzut ekranu przedstawiający wiersz polecenia z ponownym zapisywaniem przychodzącego żądania interfejsu API za pomocą serwera proxy deweloperskiego.

Przykład konfiguracji

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

Właściwości konfiguracji

Właściwości opis Wartość domyślna
rewritesFile Ścieżka do pliku zawierającego definicje ponownego zapisywania rewrites.json

Opcje wiersza polecenia

Brak

Ponowne zapisywanie przykładów plików

Poniżej przedstawiono przykłady reguł ponownego zapisywania.

Ponowne zapisywanie wszystkich żądań z protokołu HTTP do protokołu HTTPS

Ponowne zapisywanie wszystkich żądań z protokołu HTTP do protokołu HTTPS. W tym kontekście wszystkie żądania skonfigurowane za pomocą serwera proxy deweloperskiego lub serwera 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"
      }
    }
  ]
}

Ustawianie nagłówka żądania

Accept-Language Ustaw nagłówek dla wszystkich żądań na https://api.contoso.comwartość . Jeśli żądanie ma już nagłówek, wtyczka zastępuje jego wartość. Jeśli brakuje nagłówka, wtyczka ją doda. Ponieważ reguła nie określa wychodzącego adresu URL, wtyczka nie zmienia adresu URL żądania.

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

Ponowne zapisywanie żądań do adresu URL ze zmiennej środowiskowej

Ponowne zapisywanie żądań do https://api.contoso.com podstawowego adresu URL przechowywanego API_BASE_URL w zmiennej środowiskowej, zachowując pozostałą część ścieżki.

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

Makietuje właściwości pliku

Właściwości opis Wymagania
rewrites Tablica obiektów ponownego zapisywania, które definiują listę reguł ponownego zapisywania, które rewritePlugin ma zastosowanie do żądań przechwyconych tak

Ponowne zapisywanie obiektu

Każda reguła ponownego zapisywania ma następujące właściwości:

Właściwości opis Wymagania
in Zastąp wzorzec ponownego zapisywania, aby dopasować żądanie przychodzące. tak
out Ponowne zapisywanie wzorca w celu ponownego zapisania żądania tak

Uwagi

Jeśli żądanie przechwytuje polecenie RewritePlugin, nie pasuje do wszystkich właściwości zdefiniowanych we wzorcu, wtyczka nie stosuje reguły ponownego zapisywania do żądania.

Wzorzec ponownego zapisywania

Każdy wzorzec ponownego zapisywania ma następujące właściwości:

Właściwości opis Wymagania Domyślna wartość Przykładowa wartość
url We wzorcu wyrażeń regularnych, które wtyczka ma zastosowanie do adresu URL. We wzorcu out adres URL do ponownego zapisania żądania. Jeśli pominięto go we wzorcu out , wtyczka nie zmieni adresu URL żądania. Tak w, nie na wyj. ^http://(.*)
headers Tablica nagłówków żądań do ustawienia na żądanie. Obsługiwane tylko we wzorcu out . no

Uwagi

Wzorzec out musi określać wartość , headerslub oba te elementyurl.

Jeśli używasz grup przechwytywania w wyrażeniu regularnym we wzorcach, możesz odwoływać się do nich we wzorcu out . Jeśli na przykład chcesz ponownie napisać http://example.com/foohttps://example.com/fooplik , możesz użyć następującej reguły ponownego zapisywania:

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

W adresie URL out można odwoływać się do zmiennych środowiskowych przy użyciu ${env:VAR_NAME} składni . Serwer proxy deweloperów wstawia wartość zmiennej środowiskowej as-is, dzięki czemu wartość może również odwoływać się do grup przechwytywania ze wzorca in . Serwer proxy deweloperów rozpoznaje zmienne środowiskowe tylko dla żądań, które są zgodne ze wzorcem i nie rozszerza zmiennych środowiskowych we wzorcu . Jeśli nie ustawiono zmiennej środowiskowej, serwer proxy deweloperów rejestruje błąd i pomija regułę ponownego zapisywania.

Nagłówek żądania

Każdy nagłówek żądania ma następujące właściwości:

Właściwości opis Wymagania
name Nazwa nagłówka żądania tak
value Wartość ustawiona dla nagłówka żądania tak

Uwagi

Wtyczka dopasowuje nazwy nagłówków bez uwzględniania wielkości liter. Jeśli żądanie ma już nagłówek, wtyczka zastępuje jego wartość. Jeśli brakuje nagłówka, wtyczka ją doda.

Wtyczka ustawia nagłówki tylko na żądaniach, których adres URL pasuje do wzorca adresu URL. Wtyczka ocenia dopasowanie przed zastosowaniem ponownego zapisywania adresu URL tej samej reguły, więc gdy reguła ponownie zapisuje adres URL i nagłówki, nagłówki mają zastosowanie do tych samych żądań, co ponowne zapisywanie adresu URL.

Zmienne środowiskowe można odwoływać się do wartości nagłówka ${env:VAR_NAME} przy użyciu składni. Serwer proxy deweloperów rozpoznaje je tak samo jak w adresie URL wychodzącym i pomija regułę ponownego zapisywania, jeśli nie ustawiono przywoływanej zmiennej środowiskowej. Wartości nagłówków nie obsługują grup przechwytywania ze wzorca in .