本頁內容適用於 Apigee 和 Apigee Hybrid。
查看
Apigee Edge 說明文件。
存取 message
流程變數及其屬性時,取決於存取變數的 API Proxy 流程中的位置。所有情境都適用,但部分物件 (例如 request
或 response
) 不適用。
用途
message
流程變數的主要用途是當 Proxy 進入錯誤流程時,request
和 response
流程變數會超出範圍。
舉例來說,在錯誤流程中,response
物件無法使用。如果處於錯誤流程,您將無法在 response
物件上使用 JavaScript 政策設定回應標頭。請改用下列其中一種方式:
這兩個物件都可在錯誤流程中使用,可用於從 JavaScript 政策內設定回應標頭,或在可使用流程變數的其他政策中存取。
您可以使用 AssignMessage 政策,將標頭等值指派給 response 物件。AssignMessage 會自動處理從要求/回應流程到錯誤流程的環境切換。
message
變數的另一個用途,是在 PostClientFlow 中使用 MessageLogging 政策記錄回應資料。如果您使用 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
可從所有環境取得。