Apigee Edge に含まれているポリシーを使用すると、API プロキシを流れるメッセージを操作できます。ポリシーを使用すると、次のことができます。
- XML から JSON など、フォーマット間でメッセージを変換します。
- メッセージのコンテンツから変数値を設定し、変数値からメッセージを作成します。
- JavaScript、Java、Python などのプロシージャル コードを使用し、複雑な方法でメッセージやデータを処理します。
一般に、こうしたポリシーを使用する場合は、入出力変数をフロー変数として指定します。Apigee Edge は実行時にソース変数から入力値を取得し、その出力値を出力変数に書き込みます。
このトピックでは、こうした機能について説明します。技術的な詳細については、それぞれのポリシーのリファレンスをご覧ください。
XML と JSON の簡単な処理
Apigee Edge には、XML と JSON 間の変換と XSL を使用した XML の変換を容易にするポリシーが含まれています。
JSON から XML への変換
JSON to XML ポリシーは JSON 入力を取得し、XML に変換します。
次のポリシーの例では、ポリシーは request
変数から JSON 形式のメッセージを取得し、変数値を XML 形式のメッセージに置き換えます。入力は <Source>
要素で指定し、出力は <OutputVariable>
要素で指定します。
<JSONToXML name="jsontoxml"> <Source>request</Source> <OutputVariable>request</OutputVariable> </JSONToXML>
XML から JSON への変換
XML to JSON ポリシーは、XML 入力メッセージを JSON に変換します。
次のポリシーの例では、ポリシーは response
変数から XML 形式のメッセージを取得し、変数値を JSON 形式のメッセージに置き換えます。入力は <Source>
要素で指定し、出力は <OutputVariable>
要素で指定します。
<XMLToJSON name="ConvertToJSON"> <OutputVariable>response</OutputVariable> <Source>response</Source> </XMLToJSON>
XSL を使用した XML の変換
XSL 変換ポリシーを使用すると、XSL を使用してメッセージを変換できます。たとえば、JSON ペイロードを XML に変換した後、スタイルシートとともに XSL Transform ポリシーを使用して、必要な変換を行います。
次のポリシーの例では、ポリシーは response
変数から XML 形式のメッセージを取得し、変数値を my_transform.xsl
形式のメッセージに置き換えます。入力は <Source>
要素で指定し、出力は <OutputVariable>
要素で指定します。
<XSL name="TransformXML"> <ResourceURL>xsl://my_transform.xsl</ResourceURL> <Source>response</Source> <OutputVariable>response</OutputVariable> </XSL> <Source>request</Source> <ResourceURL>xsl://XSL-Transform-1.xsl</ResourceURL> <OutputVariable/>
変数データの処理
プロキシ内のデータ処理では、状態データがただフロー変数値として扱われることがよくあります。多くの場合、この処理には、変数値を取得または設定するポリシーを使用します。たとえば、変数値からメッセージを作成することや、メッセージのコンテンツを抽出して変数値を設定できます。
次の 2 つのポリシーのリファレンスを確認してください。
- Assign Message ポリシー: 変数値からメッセージを作成します。
- Extract Variables ポリシー: メッセージのコンテンツから変数を割り当てます。
複雑な変換の作成
含まれているポリシーの機能では対処できない複雑なデータを処理する場合は、JavaScript、Java、Python などのプロシージャル言語を使用できます。
通常、こうした言語のいずれかでコードを記述し、その言語に固有のポリシーからコードを呼び出します。詳細については、プロシージャル コードの組み込みをご覧ください。