查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
存取 message
資料流變數及其屬性的方式取決於
存取它的 API Proxy 流程適用於所有情況下,但某些物件
request
或 response
等這類政策則不支援。
用途
message
流程變數的主要用途是 Proxy 進入
錯誤流程:request
和 response
流程變數超出範圍。
例如,在錯誤流程中無法使用 response
物件。您不會
可使用 JavaScript 政策在 response
物件上設定回應標頭
是否處於錯誤流程中。建議您改用下列其中一種做法:
這兩個物件都會在錯誤流程中出現,且可用於設定回應 在 JavaScript 政策內存取標頭,或是在其他可使用流程的政策中存取 變數。
您可以使用 AssignMessage 政策指派值,例如標頭、 回應 response 物件。「指派訊息」功能會自動處理切換作業 從要求/回應流程到錯誤流程的背景資訊
message
變數的另一個用途是記錄
含有 MessageLogging 政策的 PostClientFlow。如果您使用 message
物件,
您可以順暢地記錄回應資訊,包括成功和錯誤狀況
Proxy 上。
範例
在錯誤流程中,您可以使用下列任一選項,從 JavaScript 政策設定回應標頭:
error
或 message
。例如:
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
變數超出
錯誤流程。(請注意,在追蹤記錄中,這會以帶有等號值的變數來表示)
上面有斜線穿過的標誌)。
如要為單一政策設定成功和錯誤流程的回應標頭,您必須
可在 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
適用於所有結構定義。