メッセージの形成、アクセス、変換

このページは ApigeeApigee ハイブリッドに適用されます。

Apigee Edge ドキュメントを表示する

Apigee に含まれるポリシーを使用して、API プロキシを通過するメッセージを操作できます。ポリシーを使用すると、次のことができます。

  • メッセージのフォーマットを変換します(XML から JSON など)。
  • メッセージのコンテンツから変数値を設定し、変数値からメッセージを作成します。
  • JavaScript、Java、Python などのプロシージャル コードを使用し、複雑な方法でメッセージやデータを処理します。

通常、こうしたポリシーを使用する場合は、入出力変数をフロー変数として指定します。Apigee は実行時にソース変数から入力値を取得し、出力値を出力変数に書き込みます。

このトピックでは、これらの機能について説明します。技術的な詳細については、それぞれのポリシーのリファレンスをご覧ください。

XML と JSON の簡単な処理

Apigee には、XML と JSON 間の変換と XSL を使用した XML の変換を容易にするポリシーが含まれています。

JSON から XML への変換

JSONtoXML ポリシーは、JSON 入力を取得し、XML に変換します。

次の例のポリシーは、request 変数から JSON 形式のメッセージを取得し、変数値を XML 形式のメッセージに置き換えます。入力は <Source> 要素で指定し、出力は <OutputVariable> 要素で指定します。

<JSONToXML name="jsontoxml">
     <Source>request</Source>                     ---> INPUT
     <OutputVariable>request</OutputVariable>          OUTPUT --->
</JSONToXML>

XML から JSON への変換

XMLtoJSON ポリシーは、XML 入力メッセージを JSON に変換します。

次の例のポリシーは、response 変数から XML 形式のメッセージを取得し、変数値を JSON 形式のメッセージに置き換えます。入力は <Source> 要素で指定し、出力は <OutputVariable> 要素で指定します。

<XMLToJSON name="ConvertToJSON">
   <Source>response</Source>                     ---> INPUT
   <OutputVariable>response</OutputVariable>          OUTPUT --->
</XMLToJSON>

XSL を使用した XML の変換

XSLTransform ポリシーを使用すると、XSL を使用してメッセージを変換できます。たとえば、JSON ペイロードを XML に変換した後、スタイルシートとともに XSL Transform ポリシーを使用して必要な変換を行うことができます。

次の例のポリシーは、response 変数から XML 形式のメッセージを取得し、変数値を my_transform.xsl 形式のメッセージに置き換えます。入力は <Source> 要素で指定し、出力は <OutputVariable> 要素で指定します。

<XSL name="TransformXML">
  <Source>response</Source>                        ---> INPUT
  <ResourceURL>xsl://my_transform.xsl</ResourceURL>       --TRANSFORMER--
  <OutputVariable>response</OutputVariable>                            OUTPUT --->
</XSL>

変数データの処理

プロキシ内のデータ処理では、状態データがフロー変数値として扱われることがよくあります。多くの場合、この処理には、変数値を取得または設定するポリシーを使用します。たとえば、変数値からメッセージを作成したり、メッセージのコンテンツを抽出して変数値を設定したりできます。

次の 2 つのポリシーのリファレンスを確認してください。

複雑な変換の作成

付属のポリシーの機能では対処できない複雑なデータ処理を行う場合は、JavaScript、Java、Python などのプロシージャル言語を使用できます。

通常、こうした言語のいずれかでコードを記述し、その言語に固有のポリシーからコードを呼び出します。詳細については、プロシージャル コードの組み込みをご覧ください。