訊息流程變數

您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件
資訊

message 流程變數及其屬性的存取權,取決於存取 API Proxy 流程中的點。適用於所有情況,但 requestresponse 等部分物件則不可行。

應用情境

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

例如,在錯誤流程中,無法使用 response 物件。如果您在錯誤流程中,無法使用 JavaScript 政策設定 response 物件的回應標頭。不過,您可以使用下列其中一項:

這兩個物件都能在錯誤流程中使用,可用來從 JavaScript 政策中設定回應標頭,或在可使用流程變數的其他政策中存取。

您可以使用 AssignMessage 政策將值 (例如標頭) 指派給 response 物件。指派 Message 會自動處理從要求/回應流程到錯誤流程的切換操作。

message 變數的另一個用途是使用 MessageLogging 政策記錄 PostClientFlow 中的回應資料。如果您使用 message 物件,就能在 Proxy 的成功和錯誤狀況下順利記錄回應資訊。

範例

在錯誤流程中,您可以使用 errormessage 設定 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 變數不在錯誤流程的範圍內。(請注意,在追蹤記錄中,這會顯示為具有斜線穿過等號的變數以視覺表示)。

如要為單一政策設定成功和錯誤流程的回應標頭,您可以在 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 適用於所有環境,因此這項作業會成功。