訊息流程變數

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

存取 message 資料流變數及其屬性的方式取決於 存取它的 API Proxy 流程適用於所有情況下,但某些物件 requestresponse 等這類政策則不支援。

用途

message 流程變數的主要用途是 Proxy 進入 錯誤流程:requestresponse 流程變數超出範圍。

例如,在錯誤流程中無法使用 response 物件。您不會 可使用 JavaScript 政策response 物件上設定回應標頭 是否處於錯誤流程中。建議您改用下列其中一種做法:

這兩個物件都會在錯誤流程中出現,且可用於設定回應 在 JavaScript 政策內存取標頭,或是在其他可使用流程的政策中存取 變數。

您可以使用 AssignMessage 政策指派值,例如標頭、 回應 response 物件。「指派訊息」功能會自動處理切換作業 從要求/回應流程到錯誤流程的背景資訊

message 變數的另一個用途是記錄 含有 MessageLogging 政策的 PostClientFlow。如果您使用 message 物件, 您可以順暢地記錄回應資訊,包括成功和錯誤狀況 Proxy 上。

範例

在錯誤流程中,您可以使用下列任一選項,從 JavaScript 政策設定回應標頭: errormessage。例如:

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 適用於所有結構定義。