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

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"トークンのカスタム検証を正規表現を使用して実装します。また、特定のメソッド + パスの組み合わせはベアラートークンの検証を行いません。
ルーティングユーザーが状況に応じてルーティングを続行するか、即座に失敗を処理できるようにコーディングできるようにします。

Pre-function Examples

適用する例

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