プロシージャル コードの組み込み

JavaScript、Java、Python などのプロシージャル言語でコードを追加し、そのコードを API プロキシの他の部分から呼び出すことができます。プロシージャル コードのサポートは、フロー変数、障害、リクエスト本文、レスポンス本文の複雑な処理を簡単に実装できるよう設計されています。

プロシージャル コードでできることを、以下に示します。

  • 複雑な本文の値(リクエストおよびレスポンスの値)を作成または操作する。
  • URL を書き換える(たとえばターゲット エンドポイント URL をマスクする)。
  • 含まれているポリシーにない、その他のロジックを追加する。

仕組み

言語に固有のポリシーを使用するのは、含まれているコードに対してプロキシフローから呼び出しを行うためです。サポート対象の各言語に対し、Apigee Edge にはそれぞれ JavaScript ポリシーJava Callout ポリシーPython Script ポリシーが含まれます。

以下に、これが機能する方法の 1 つを大まかに説明します。詳細については、必ずポリシー リファレンスでご確認ください。

  1. 個々のファイルに、使用するコードを書き込みます。
  2. コードの中で、コードの処理の結果を Apigee Edge フロー変数に挿入します。

    変数値は、API プロキシ内の他の場所で取得します。フロー変数の詳細については、フロー変数を使用したプロキシ状態の管理をご覧ください。

  3. ファイル(または JAR)をレスポンス ファイルとして API プロキシに追加します。

    リソース ファイルの詳細については、リソース ファイルをご覧ください。

  4. 使用している言語に対応するポリシーを追加します。

    ポリシーを構成して、API プロキシのフローの任意の場所からコードに対する呼び出しを行うようにします。

  5. フロー変数からコードの値を取得するポリシーを使用します。

制限事項

Apigee Edge セキュリティ モデルでは、ネットワーク I/O、ファイル システム読み込み / 書き込み、現在のユーザー情報、プロセスリスト、CPU / メモリ使用率などのシステム呼び出しが許可されていません。これらの呼び出しの一部は機能しますが、サポート対象外のため、常に無効にしておく必要があります。上位互換性を維持するため、このような呼び出しをコード内に作成しないでください。

サポート対象の言語ごとに、その他の制限事項が存在する場合があります。該当言語に対応するポリシー リファレンスの説明をご覧ください。

サポートされる言語

JavaScript

JavaScript のサポートには、API プロキシ固有の変数および値を処理するためのフル オブジェクト モデルが含まれます。詳細については、JavaScript オブジェクト モデルをご覧ください。

ポリシーのリファレンス情報と例については、JavaScript ポリシーをご覧ください。

サンプルコードについては、サンプルリストで含まれている JavaScript を使って検索してください。

Java

Java Callout ポリシーを使用して、プロキシのフローから Java コードを呼び出します。ポリシー リファレンスのトピックに例が含まれています。

以下のトピックもご覧ください。

サンプルコードについては、サンプルリストで含まれている Java を使って検索してください。

Python

Python Script ポリシーを使用して、Python コードを呼び出します。

サンプルコードについては、サンプルリストで含まれている Python を使って検索してください。