Rewriteプラグイン

要求を書き換える。

Dev Proxy が受信 API 要求を書き換えたコマンド プロンプトのスクリーンショット。

構成の例

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

構成プロパティ

プロパティ 説明 既定値
rewritesFile 書き換え定義を含むファイルへのパス rewrites.json

コマンドライン オプション

なし

ファイルの書き換えの例

書き換えルールの例を次に示します。

HTTP から HTTPS へのすべての要求を書き換える

HTTP から HTTPS へのすべての要求を書き換える。 このコンテキストでは、 all は、開発プロキシまたは 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"
      }
    }
  ]
}

要求ヘッダーを設定する

すべての要求の Accept-Language ヘッダーを https://api.contoso.com に設定します。 要求に既にヘッダーがある場合、プラグインはその値を置き換えます。 ヘッダーが見つからない場合は、プラグインによって追加されます。 規則では out URL が指定されていないため、プラグインは要求 URL を変更しません。

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

環境変数から URL への要求を書き換える

API_BASE_URL環境変数に格納されているベース URL にhttps://api.contoso.comする要求を書き換え、残りのパスを保持します。

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

モック ファイルのプロパティ

プロパティ 説明 必須
rewrites rewritePlugin がインターセプトする要求に適用される書き換え規則の一覧を定義するrewrite オブジェクトの配列 はい

オブジェクトの書き換え

各書き換えルールには、次のプロパティがあります。

プロパティ 説明 必須
in パターンの書き換え 受信要求に一致するようにします。 はい
out 書き換えパターン 要求を書き換える はい

解説

RewritePlugin がインターセプトする要求が、 in パターンで定義されているすべてのプロパティと一致しない場合、プラグインは書き換えルールを要求に適用しません。

書き換えパターン

各書き換えパターンには、次のプロパティがあります。

プロパティ 説明 必須 規定値 値の例
url in パターン では 、プラグインが URL に適用される正規表現。 出力パターンでは、要求を書き換える URL。 out パターンで省略した場合、プラグインは要求 URL を変更しません。 は い in、no in out ^http://(.*)
headers 要求に設定する 要求ヘッダー の配列。 出力パターンでのみサポートされます。 no

解説

出力パターンでは、url、headers、またはその両方を指定する必要があります。

in パターンの正規表現でキャプチャ グループを使用する場合は、out パターンでそれらを参照できます。 たとえば、 http://example.com/foo を https://example.com/fooに書き換える場合は、次の書き換え規則を使用できます。

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

出力 URL では、${env:VAR_NAME}構文を使用して環境変数を参照できます。 Dev Proxy は環境変数の値を as-is挿入するため、値は in パターンからのキャプチャ グループを参照することもできます。 開発プロキシは、in パターンに一致し、in パターン 内の 環境変数を展開しない要求に対してのみ 環境変数を解決 します。 参照先の環境変数が設定されていない場合、Dev Proxy はエラーをログに記録し、書き換えルールをスキップします。

リクエストヘッダー

各要求ヘッダーには、次のプロパティがあります。

プロパティ 説明 必須
name 要求ヘッダーの名前 はい
value 要求ヘッダーに設定する値 はい

解説

プラグインは、大文字と小文字を区別せずにヘッダー名と一致します。 要求に既にヘッダーがある場合、プラグインはその値を置き換えます。 ヘッダーが見つからない場合は、プラグインによって追加されます。

プラグインは、URL が in URL パターンと一致する要求にのみヘッダーを設定します。 プラグインは、同じルールの URL 書き換えを適用する前に一致を評価するため、ルールが URL とヘッダーの両方を書き換えると、ヘッダーは URL 書き換えと同じ要求に適用されます。

${env:VAR_NAME}構文を使用して、ヘッダー値内の環境変数を参照できます。 Dev Proxy は out URL と 同じ方法で解決し、参照先の環境変数が設定されていない場合は書き換えルールをスキップします。 ヘッダー値は、 in パターンからのキャプチャ グループをサポートしていません。