このページは Apigee と Apigee ハイブリッドに適用されます。
Apigee Edge のドキュメントを表示する。
message フロー変数とそのプロパティへのアクセスは、アクセスする API プロキシフロー内の場所によって異なります。これは、すべてのコンテキストで使えますが、request や response などの一部のオブジェクトでは使えません。
ユースケース
message フロー変数の主なユースケースは、プロキシがエラーフローに入るときです。request、response フロー変数は対象外です。
たとえば、エラーフローでは、response オブジェクトを使用できません。エラーフロー内にある場合、JavaScript ポリシーを使って、response オブジェクトにレスポンス ヘッダーを設定することはできません。代わりに、次のいずれかを使用できます。
どちらのオブジェクトもエラーフローで使用でき、JavaScript ポリシー内からレスポンス ヘッダーを設定したり、フロー変数を使用できる他のポリシーでアクセスしたりできます。
AssignMessage ポリシーを使用して、ヘッダーなどの値を、response オブジェクトに割り当てることができます。AssignMessage は、リクエストとレスポンスのフローからエラーフローへのコンテキストの切り替えを自動的に処理します。
message 変数のもう 1 つのユースケースは、MessageLogging ポリシーを使用して PostClientFlow 内のレスポンス データを記録することです。message オブジェクトを使うと、プロキシの成功条件とエラー条件の両方に応じてレスポンス情報をシームレスに記録できます。
例
エラーフローでは、error または message を使用して、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 を使えるため、このフローは成功します。