本頁適用於 Apigee 和 Apigee Hybrid。
查看
Apigee Edge 說明文件。
您可以存取 message 資料流變數及其屬性,這取決於您在 API Proxy 資料流中存取資料流的時間點。它可用於所有情境,但有些物件 (例如 request 或 response) 則無法使用。
用途
message 流程變數的主要用途是當 Proxy 進入錯誤流程時:request 和 response 流程變數超出範圍。
舉例來說,在錯誤流程中,response 物件無法使用。如果您處於錯誤流程中,就無法使用 JavaScript 政策在 response 物件上設定回應標頭。建議改用下列其中一種做法:
這兩個物件皆可在錯誤流程中使用,可用於在 JavaScript 政策中設定回應標頭,或在可使用流程變數的其他政策中存取。
您可以使用AssignMessage 政策,將值 (例如標頭) 指派給 response 物件。AssignMessage 會自動處理從要求/回應流程切換至錯誤流程的情況。
message 變數的另一個用途是使用 MessageLogging 政策在 PostClientFlow 中記錄回應資料。如果您使用 message 物件,即可在 Proxy 中順利記錄成功和錯誤狀態下的回應資訊。
範例
在錯誤流程中,您可以使用 error 或 message 從 JavaScript 政策設定回應標頭。例如:
context.setVariable('error.header.FOO-1', 'error_header');OR
context.setVariable('message.header.FOO-2', 'message_header');不過,下列運算式不會運作:
context.setVariable('response.header.FOO-3', 'response_header');在這種情況下,response 變數超出錯誤流程中的範圍。(請注意,在追蹤記錄中,這會以等號符號加上斜線的形式顯示在變數中)。
如要在單一政策中為成功和錯誤流程設定回應標頭,您可以在 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 可在所有情境中使用。