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