メッセージ フロー変数

このページの内容は ApigeeApigee ハイブリッドに該当します。

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

message フロー変数とそのプロパティへのアクセスは、アクセスする API プロキシフロー内の場所によって異なります。これは、すべてのコンテキストで使えますが、requestresponse などの一部のオブジェクトでは使えません。

ユースケース

message フロー変数の主なユースケースは、プロキシがエラーフローに入るときです。requestresponse フロー変数は対象外です。

たとえば、エラーフローでは、response オブジェクトを使用できません。エラーフロー内にある場合、JavaScript ポリシーを使用して response オブジェクトにレスポンス ヘッダーを設定することはできません。代わりに、次のいずれかを使用できます。

どちらのオブジェクトもエラーフローで使用でき、JavaScript ポリシー内からレスポンス ヘッダーを設定することや、フロー変数を使用できる他のポリシーでアクセスすることが可能です。

AssignMessage ポリシーを使用して、ヘッダーなどの値を、response オブジェクトに割り当てることができます。AssignMessage は、リクエストとレスポンスのフローからエラーフローへのコンテキストの切り替えを自動的に処理します。

message 変数のもう一つのユースケースは、MessageLogging ポリシーを使用して PostClientFlow 内のレスポンス データをロギングすることです。message オブジェクトを使用すると、プロキシの成功条件とエラー条件の両方に応じてレスポンス情報をシームレスにロギングできます。

エラーフローでは、errormessage を使用して、JavaScript ポリシーからレスポンス ヘッダーを設定できます。次に例を示します。

context.setVariable('error.header.FOO-1', 'error_header');

または

context.setVariable('message.header.FOO-2', 'message_header');

ただし、次の式は機能しません

context.setVariable('response.header.FOO-3', 'response_header');

この場合、response 変数はエラーフローの範囲外です(なお、トレースでは、等号とスラッシュを使って視覚的に表示されます)。

1 つのポリシーで成功フローとエラーフローの両方にレスポンス ヘッダーを設定するには、JavaScript ポリシー内で message を使用します。次に例を示します。

<faultrules>
  <faultrule name="invalid_key_rule">
    <step>
      <name>SetResponseHeaders</name>
    </step>
    <condition>(fault.name = "InvalidApiKey")</condition>
  </faultrule>
</faultrules>

このポリシーでは、次のようなコードにより、すべてのフロー コンテキストでエラー / レスポンス ヘッダーが設定されます。

context.setVariable('message.header.FOO-1', 'the header value');

通常の ProxyResponse フローでこの同じポリシーを再利用でき、すべてのコンテキストから message を使えるため、このフローは成功します。