メインコンテンツまでスキップ

Pre-function

概要

Pre-function ポリシーは、リクエストが処理される前にユーザーがカスタムスクリプトを実行できるようにします。このポリシーにより、ユーザーはリクエストパラメータ、ヘッダー、およびボディコンテンツを追加、削除、または変換することで、リクエストを動的に変更できます。

Pre-function ポリシーは、一般的に以下の目的で使用されます:

  • Data Masking: バックエンドに到達する前に、個人識別番号などの機密データを隠すこと。
  • Query String Manipulation: クエリパラメータを動的に変更またはフィルタリングすること。
  • Token Validation: 認証およびセキュリティロジックを実装すること。
  • Routing Control: リクエスト属性に基づいてルーティングの決定を変更すること。

設定の詳細

Pre-function ポリシーは、ユーザーがスクリプトを書く code editor で構成されています。インターフェースには、以下のコンポーネントが含まれています:

コードエディタ

editor は、ユーザーがAPIリクエストライフサイクルのさまざまな実行フェーズのためにカスタムLuaスクリプトを書いたり修正したりするための主要なエリアです。コードエディタ内には、4つのタブがあります:

  • Access: ここに入力されたコードは、アクセスフェーズ中に実行され、ユーザーが認証、ヘッダー、パスの書き換えなどのリクエストレベルのロジックを操作できるようにします。
  • Header Filter: クライアントに返される前にレスポンスヘッダーを変更するために使用されます。
  • Body Filter: レスポンスボディを操作できるようにし、レスポンスコンテンツを変換またはマスクするのに役立ちます。
  • Log: リクエストが処理された後に、リクエストまたはレスポンスデータに基づいてロギング動作を実装するために使用されます。

各タブには専用のコードエディタがあり、開発を迅速化するためのスニペットや例にアクセスできます。

注記

コードは、複数の実行フェーズを利用する場合、各タブ内で別々に記述して保存する必要があります。

Pre-function Code Editor

スニペット(定義済みコードブロック)

Snippets セクションでは、ユーザーがエディタに挿入できる定義済みのコードブロックを提供します。これにより、ユーザーはコードをゼロから書くことなく、一般的に使用されるリクエストの変更を迅速に実装できます。

スニペットのリスト:

SnippetsDescription
JSON パーサーJSON 形式のリクエストボディを読み込み、処理します。
リクエスト生ボディの取得処理前にリクエストボディ全体を取得します。
サービスリクエスト生ボディの設定リクエストボディを修正し、バックエンドに転送する前に変更します。
リクエストメソッドの取得HTTP メソッド(GET、POST など)を取得します。
リクエストパスの取得完全なリクエストパスを取得します。
リクエストヘッダーの取得特定のリクエストヘッダーから値を抽出します。
リクエストヘッダーの設定リクエストヘッダーを動的に修正または追加します。
レスポンス終了の設定リクエストを終了し、カスタムレスポンスを返します。
サービスホストの設定宛先サーバーを動的に変更します。
サービスリクエストスキームの設定リクエストスキーム(http または https)を修正します。
サービスリクエストパスの設定リクエストパスを変更し、バックエンドに送信する前に修正します。

Pre-function Snippets

例のセクション

このセクションには、Pre-function ポリシーの実用的な実装を示す定義済みの例スクリプトが含まれています。これらの例は、ユーザーが一般的なシナリオを迅速に実装するためのテンプレートとして機能します。

例のリスト:

ExamplesDescription
データマスキングリクエストペイロード内の機密情報をマスクします。クエリ文字列に値として現れた場合、韓国の住民登録番号を「SSN-DATA」に置き換え、ルーティングを続行します。
クエリ文字列操作"service"キーとその対応する値を除くすべてのクエリ文字列を削除します。
バックエンドルーティング条件に基づいてパラメータをフィルタリングします:
- ルーティング対象のバックエンドアドレスがAの場合、すべてのクエリパラメータは完全に削除されます。
- ただし、ルーティング対象のバックエンドアドレスがBの場合、特定のクエリパラメータのセットのみが許可され、他は破棄されます。
トークン検証正規表現を使用して「Authorization: bearer xxxxxxxx」トークンのカスタム検証を実装します。また、特定のメソッド + パスの組み合わせはベアラートークンの検証を行いません。
ルーティングユーザーがコードを記述できるようにし、状況に応じてルーティングを続行するか、すぐに失敗を処理できるようにします。

前処理の例

適用例

ユーザーはコードエディタ内でスクリプトを直接修正するか、事前定義されたスニペットを使用できます。例をクリックするとポップアップエディタが開き、さらなるカスタマイズが可能になります。