Request Transformer Advanced
概要
Request Transformer Advancedポリシーは、APIリクエストをバックエンドに到達する前に動的に変更できるようにします。このポリシーは、five tag operationsを通じて変換機能を提供し、リクエストが望ましい構造に準拠することを保証します:
- Remove Tag:特定のヘッダー、クエリパラメータ、またはボディフィールドを削除します。
- Rename Tag:フィールドの名前を変更し、その値を保持します。
- Replace Tag:テンプレート、文字列、または関数を使用して既存の値を変更します。
- Add Tag:ヘッダー、クエリパラメータ、またはボディに新しいフィールドを追加します。
- Append Tag:既存のフィールドにデータを追加し、置き換えません。
このポリシーは、バックエンドに転送する前のstructuring, securing, and optimizing APIリクエストに特に便利です。
設定の詳細
パラメータ設定
タグを追加すると、ユーザーはこれらのテンプレートを値として使用できます:
現在のリクエストヘッダー、クエリパラメータ、およびキャプチャされたURIグループのいずれかをテンプレートとして使用して、サポートされている設定フィールドを埋めることができます。
- Request Parameter: ヘッダー
- Template:
$(headers.<header_name>), $(headers["<Header-Name>"]) または $(headers["<header-name>"])
- Request Parameter: クエリ文字列
- Template:
$(query_params.<query-param-name>) または $(query_params["<query-param-name>"])
- Request Parameter: キャプチャされたURI
- Template:
$(uri_captures.<group-name>) または $(uri_captures["<group-name>"])
- Request Parameter: 共有変数
- Template:
$(shared.<variable-name>) または $(shared["<variable-name>"])
テンプレートをエスケープするには、引用符で囲み、別のテンプレート内に渡します。例えば:
$('$(something_that_needs_to_escaped)')
Note: プラグインは、変換前にリクエストヘッダー、クエリ文字列、およびキャプチャされたURIの変更不可能なテーブルを作成します。したがって、テンプレートで使用されるパラメータの更新または削除は、テンプレートのレンダリングされた値に影響を与えません。
ヘッダー値に「Basic」をプレフィックスとして追加する完全なLambdaの例(すでに存在しない場合):
Authorization:$((function()
local value = headers.Authorization
if not value then
return
end
if value:sub(1, 6) == "Basic " then
return value -- すでに正しく形成されている
end
return "Basic " .. value -- 正しいプレフィックスを追加
end)())
Note: 特に上記の例のような複数行のテンプレートでは、末尾に空白や改行を追加しないようにしてください。これらはプレースホルダーの外にあるため、テンプレートの一部と見なされ、生成された値に追加されます。環境はサンドボックス化されており、Lambdasは文字列メソッド(上記の例のようなsub())を除いて、ライブラリ関数にアクセスできません。
"Remove" タグを追加
- Function: リクエストからフィールドを削除します。
-
Configuration Steps:
- ドロップダウンから "Remove" を選択します。
- 削除する field name を入力します。
- 適用可能なスコープ (Headers, Query String, Body) を選択します。
- タグを適用するには Save をクリックします。
"Rename" タグを追加
- Function: 値を変更せずに existing リクエストフィールドの名前を変更します。
-
Configuration Steps:
- ドロップダウンから "Rename" を選択します。
- current field name と new name を入力します。
- 適用可能なスコープ (Headers, Query String, Body) を選択します。
- タグを適用するには Save をクリックします。
"Replace" タグを追加
- Function: 既存のフィールドの値を templates, strings, or functions を使用して変更します。
-
Configuration Steps:
- ドロップダウンから "Replace" を選択します。
- 置き換えるための field name を入力します。
- new value タイプ (Template, String, Function) を選択します。
- replacement value を入力します。
- 適用可能なスコープ (Headers, Query String, Body) を選択します。
- タグを適用するには Save をクリックします。
"Add" タグを追加
- Function: リクエストに新しいフィールドを挿入します。
-
Configuration Steps:
- ドロップダウンから "Add" を選択します。
- field name と new value を入力します。
- data type を選択します: Template – 事前定義されたプレースホルダーを使用; String – 静的テキスト; Function – 動的ロジックベースの値。
- 適用可能なスコープを選択します (Headers, Query String, Body)。
- タグを適用するには Save をクリックします。
"Append" タグを追加
- Function: は、existing フィールドに追加データを追加し、置き換えるのではありません。
-
Configuration Steps:
- ドロップダウンから "Append" を選択します。
- field name と data to append を入力します。
- data type を選択します (Template, String, Function)。
- 適用可能なスコープを選択します (Headers, Query String, Body)。
- タグを適用するには Save をクリックします。
タグを更新
- Function: は、既存のタグの変更を許可します。
-
Configuration Steps:
- タグテーブルの tag をクリックします。
- 現在のタグの詳細が表示される update popup が表示されます。
- 必要な値を変更します(例: フィールド名、新しい値、データ型)。
- 変更を適用するには Save をクリックします。
- 変更が反映されるように API を再デプロイします。
タグを削除
- Function: は、ポリシー構成から既存のタグを削除します。
-
Configuration Steps:
- タグテーブルで tag を見つけます。
- タグ名の隣にある (x) icon をクリックします。
- confirmation popup が表示されます。
- 削除を確認するには Check をクリックしてください。
- 削除を完了するためにAPIを再デプロイします。