流程變數參考資料

您正在查看 Apigee Edge 說明文件。
請參閱 Apigee X 說明文件
info

本節提供流程變數的參考資訊。

Apigee Edge 定義了下列流程變數:

apigee              loadbalancing        route
apiproxy            message              router
application         messageid            servicecallout
client              organization         system
current             proxy                target
environment         ratelimit            variable
error               request              virtualhost
is                  response
                               

我們將在後續章節中說明每個變數。

apigee

輔助變數,提供政策執行時間的相關資訊。

下表說明 apigee 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
apigee.metrics.policy.policy_name.timeTaken 整數 唯讀 政策執行所需的時間 (以奈秒為單位)。 政策

apiproxy

說明 API Proxy。

下表說明 apiproxy 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
apiproxy.name 字串 唯讀 API Proxy 的名稱。例如「My Proxy」。 Proxy 要求
apiproxy.revision 字串 唯讀 API Proxy 的修訂版本號碼。例如「6」。 Proxy 要求

如要進一步瞭解如何使用 API Proxy,請參閱「瞭解 API 和 API Proxy」。

application

application.basepath 屬性的容器。

下表說明 application 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
application.basepath 字串 唯讀 部署基礎路徑 (在 API 部署期間指定)。 Proxy 要求

client

向 Edge 路由器傳送要求的應用程式或系統。

下表說明 client 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
client.cn 字串 唯讀

用戶端應用程式提供的 TLS/SSL 憑證中指定的一般名稱。

Proxy 要求
client.country 字串 唯讀

用戶端應用程式提供的 TLS/SSL 憑證中所列的國家/地區。

Proxy 要求
client.email.address 字串 唯讀

用戶端應用程式提供的 TLS/SSL 憑證中的電子郵件地址。

Proxy 要求
client.host 字串 唯讀

與 ProxyEndpoint 收到的要求相關聯的 HTTP 主機 IP。

Proxy 要求
client.ip 字串 唯讀

傳送訊息至 Edge 路由器的用戶端或系統 IP 位址。例如,這可能是原始用戶端 IP 或負載平衡器 IP。

Proxy 要求
client.locality 字串 唯讀

用戶端提供的 TLS/SSL 憑證中的地區 (城市)。

Proxy 要求
client.organization 字串 唯讀 用戶端提供的 TLS/SSL 憑證中的機構。(不一定等同於 Apigee Edge 中的機構)。 Proxy 要求
client.organization.unit 字串 唯讀

用戶端提供的 TLS/SSL 憑證中的機構單位。

Proxy 要求
client.port 整數 唯讀

與 ProxyEndpoint 來源用戶端要求相關聯的 HTTP 通訊埠。

Proxy 要求
client.received.end.time 字串 唯讀

代理程式在 ProxyEndpoint 上完成接收來自原始用戶端的要求時的時間,以字串形式表示。例如:2013 年 8 月 21 日星期三 19:16:47 UTC。

這個時間值是相應 32 位元時間戳記數量的字串表示法。舉例來說,'Wed, 21 Aug 2013 19:16:47 UTC' 對應的時間戳記值為 1377112607413。

Proxy 要求
client.received.end.timestamp 唯讀

時間戳記值,指定 ProxyEndpoint 在 Proxy 完成接收來自原始用戶端的要求時的時間。這個值是 64 位元 (長) 整數,包含自世界標準時間 1970 年 1 月 1 日午夜起經過的毫秒數。

Proxy 要求
client.received.start.time 字串 唯讀

以字串形式表示的時間,Proxy 開始在 ProxyEndpoint 上接收來自原始用戶端的要求。例如:2013 年 8 月 21 日星期三 19:16:47 (世界標準時間)

這個時間值是相應 32 位元時間戳記數量的字串表示法。舉例來說,'Wed, 21 Aug 2013 19:16:47 UTC' 對應的時間戳記值為 1377112607413。

Proxy 要求
client.received.start.timestamp 唯讀

指定 ProxyEndpoint 開始接收原始用戶端要求的時間戳記值。這個值是 64 位元 (長) 整數,包含自世界標準時間 1970 年 1 月 1 日午夜起經過的毫秒數。

Proxy 要求
client.scheme 字串 唯讀

根據用戶端應用程式用來傳送要求訊息的傳輸方式,傳回 http 或 https。

Proxy 要求
client.sent.end.time 字串 唯讀

以字串形式表示的時間,代表 ProxyEndpoint 完成將回應傳送至用戶端的時間。例如:「Wed, 21 Aug 2013 19:16:47 UTC」。

這個值是相應 32 位元 client.sent.end.timestamp 的字串表示法。例如,「Wed, 21 Aug 2013 19:16:47 UTC」對應的時間戳記值為 1377112607413。

PostClientFlow
client.sent.end.timestamp 唯讀 指定 ProxyEndpoint 完成將回應傳回給原始用戶端應用程式的時間戳記值。此值為 64 位元 (長) 整數,包含自 1970 年 1 月 1 日午夜起經過的毫秒數。 PostClientFlow
client.sent.start.time 字串 唯讀 ProxyEndpoint 開始傳回回應給原始用戶端應用程式的時間,以字串形式表示。例如「Wed, 21 Aug 2013 19:16:47 UTC」。

這個值是相應 32 位元 client.sent.start.timestamp 的字串表示法。例如,「Wed, 21 Aug 2013 19:16:47 UTC」對應的時間戳記值為 1377112607413。

PostClientFlow
client.sent.start.timestamp 唯讀 代理程式開始從 ProxyEndpoint 傳送回應給用戶端的時間。這個值以 64 位元 (長) 整數表示,包含自世界標準時間 1970 年 1 月 1 日午夜起經過的毫秒數。 PostClientFlow
client.ssl.enabled 字串 唯讀

如果 ProxyEndpoint 已設定為 TLS/SSL,則為「true」;否則為「false」。

Proxy 要求
client.state 字串 唯讀

用戶端提供的 TLS/SSL 憑證中的狀態。

Proxy 要求

current

包含目前 API 代理程式流程的相關資訊。

下表說明 current 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
current.flow.name 字串 唯讀 目前執行的流程名稱 (例如「PreFlow」、「PostFlow」或條件式流程的名稱)。 Proxy 要求
current.flow.description 字串 唯讀 目前執行的流程說明。這與流程 XML 設定中 <Description> 元素的值相同。 Proxy 要求

您可以在 Edge UI 的追蹤記錄檢視畫面中查看這些屬性。不過,這些屬性預設不會顯示在傳統 UI 的 Trace 檢視畫面中。

environment

environment.name 屬性的容器。

下表說明 environment 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
environment.name 字串 唯讀 交易執行的環境名稱。 Proxy 要求

error

錯誤流程中代表錯誤訊息的內容物件。

下表說明 error 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
error message 讀取/寫入 錯誤類型為 message,這是錯誤流程中的內容物件。 錯誤
error.content 字串 讀取/寫入 錯誤內容。 錯誤
error.message 字串 唯讀

與錯誤相關聯的訊息,其值僅在執行錯誤流程之前可用。

錯誤
error.status.code 整數 唯讀

與錯誤相關聯的 HTTP 狀態碼。例如「400」。

錯誤
error.reason.phrase 字串 唯讀

與錯誤相關的理由短語。例如:「Bad Request」。

錯誤
error.transport.message TransportMessage 唯讀

任何 TransportMessage 類型的錯誤。

錯誤
error.state 整數 唯讀

發生錯誤的流程中的狀態。

錯誤
error.header.header_name 字串 讀取/寫入

取得或設定回應標頭。

錯誤

fault

當政策擲回錯誤時,會設為執行階段錯誤代碼的流程變數。錯誤代碼值會依政策而異。

屬性 類型 讀取/寫入 說明 範圍開始
fault.fault_name 字串 唯讀 fault_name 是錯誤名稱,如各政策參考資料主題中的「執行階段錯誤」表格所述。 錯誤

is

is.error 屬性的容器。

下表說明 is 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
is.error 布林值 唯讀

錯誤標記。

Proxy 要求

loadbalancing

提供 TargetEndpoint 的負載平衡狀態資訊。

下表說明 loadbalancing 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
loadbalancing.failedservers 字串陣列 唯讀

在 TargetEndpoint 負載平衡期間,失敗的 TargetServer 清單。

目標回應
loadbalancing.isfallback 布林值 唯讀

如果在 TargetEndpoint 上啟用負載平衡時,針對已叫用的 TargetServer 啟用備用方案,則為「true」。

目標回應
loadbalancing.targetserver 字串 唯讀

在 TargetEndpoint 負載平衡期間叫用的 TargetServer。只有在定義負載平衡器元素時設定 <Path> 元素時才會設定。

目標回應

message

內容物件,其值與要求流程中的 request 相同,或與回應流程中的 response 相同,或與錯誤流程中的 error 相同。

下表說明 message 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
message message 讀取/寫入

內容物件,其值與要求流程中的 request 相同,或與回應流程中的 response 相同,或與錯誤流程中的 error 相同。

Proxy 要求
message.content 字串 讀取/寫入

要求、回應或錯誤訊息的內容。

Proxy 要求
message.formparam.param_name 字串 讀取/寫入

指定表單參數的值。

Proxy 要求
message.formparam.param_name.
 values
集合 唯讀

訊息中指定表單參數的所有值。

Proxy 要求
message.formparam.param_name.
 values.count
整數 唯讀

訊息中指定表單參數的值計數。/p>

Proxy 要求
message.formparams.count 整數 唯讀

郵件中的所有表單參數數量。

Proxy 要求
message.formparams.names 集合 唯讀

訊息中所有表單參數的值。

Proxy 要求
message.formstring 字串 唯讀

訊息中的表單字串值。

Proxy 要求
message.header.header_name 字串 讀取/寫入

取得或設定郵件中指定 HTTP 標頭的值。如果標頭包含半形逗號,您在讀取時只會收到文字的部分片段,直到第一個半形逗號為止。如果要整個標頭,請使用以下表單: request.header.header_name.
 values

Proxy 要求
message.header.header_name.N 字串 讀取/寫入

訊息中 第 N 個 特定標頭值的值,取決於流程狀態,可能是要求或回應。Apigee Edge 會以半形逗號分隔標頭文字值。請注意,用於 N 的索引值是以 1 為起點,而非 0。

舉例來說,如果 Cache-control 標頭為「public,maxage=16544」,則 message.header.cache-control.1 的傳回值為「maxage=16544」。

Proxy 要求
message.header.header_name.
 values
集合 唯讀

訊息中指定的 HTTP 標頭名稱的所有值。

Proxy 要求
message.header.header_name.
 values.count
整數 唯讀

訊息中指定 HTTP 標頭名稱的值計數。

Proxy 要求
message.headers.count 整數 唯讀

訊息中所有 HTTP 標頭的計數。

Proxy 要求
message.headers.names 集合 唯讀

郵件中所有 HTTP 標頭的值

Proxy 要求
message.path 字串 讀取/寫入

網址中的完整要求訊息路徑,不含任何查詢參數。

Proxy 要求
message.queryparam.param_name 字串 唯讀

傳回指定的訊息查詢參數。

Proxy 要求
message.queryparam.param_name.N 字串 讀取/寫入

訊息中第 N 個查詢參數的值。舉例來說,如果 request.querystring 是「a=hello&a=world」,則 message.queryparam.a.1 的傳回值是「hello」。

舉例來說,如要為單一查詢參數名稱寫入多個值,例如「type=siteid:1&type=language:us-en&type=currency:USD」,請設定以下內容:

  • message.queryparam.type.1 為「siteid:1」
  • message.queryparam.type.2 變更為「language:zh-TW」
  • message.queryparam.type.3 變更為「currency:USD」
Proxy 要求
message.queryparam.param_name.
 values
集合 唯讀

訊息中特定查詢參數的所有值,格式為以半形逗號分隔的清單。

舉例來說,如果查詢字串為 a=hello&a=world,則 message.queryparam.a.values 的值為「['hello', 'world']」。

Proxy 要求
message.queryparam.param_name.
 values.count
整數 唯讀

與從用戶端應用程式傳送至 ProxyEndpoint 的要求相關聯的指定查詢參數總數。

Proxy 要求
message.queryparams.count 整數 唯讀

與從用戶端應用程式傳送至 ProxyEndpoint 的要求相關聯的所有查詢參數總數。

Proxy 要求
message.queryparams.names 集合 唯讀

與從用戶端應用程式傳送至 ProxyEndpoint 的要求相關聯的所有查詢參數名稱清單。

如要使用 JavaScript 逐一處理查詢參數名稱,請參閱以下 Apigee 社群文章:如何在 JS 中從「request.queryparams.names」逐一處理集合?Apigee 社群中。

Proxy 要求
message.querystring 字串 唯讀

字串,其中包含與從用戶端應用程式傳送至 ProxyEndpoint 的要求相關聯的所有查詢參數名稱和值。

舉例來說,如果要求為「http://api.apifactory.com/inventors?name=nick&surname=danger」,message.querystring 的值就是「name=nick&surname=danger」。

Proxy 要求
message.reason.phrase 字串 唯讀

目標回應訊息的 ReasonPhrase。

目標回應
message.status.code 整數 唯讀

目標回應訊息的 HTTP 狀態碼。

目標回應
message.transport.message TransportMessage 唯讀

訊息類型為 TransportMessage,這是內容物件。

Proxy 要求
message.uri 字串 唯讀

完整的 URI 路徑 (位於網域網址之後),包括查詢參數。

舉例來說,如果要求為「http://api.apifactory.com/inventors?name=nikola&surname=tesla」,這個變數會傳回「inventors?name=nikola&surname=tesla」。

Proxy 要求
message.verb 字串 唯讀

與要求相關聯的 HTTP 動詞 (GETPUTPOSTDELETE 等)。

Proxy 要求
message.version 字串 讀取/寫入

與從用戶端應用程式傳送至 ProxyEndpoint 的要求相關聯的 HTTP 版本。

Proxy 要求

如要進一步瞭解訊息,請參閱「訊息範本函式參考資料」。

messageid

要求的全域不重複 ID 容器。

下表說明 messageid 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
messageid 字串 唯讀

儲存要求的全域不重複 ID,其中包含路由器主機名稱。這項 ID 可讓您在路由器收到要求後,追蹤要求傳送至訊息處理程序的情況。

系統會將此 ID 記錄在 Edge 錯誤記錄檔中,以便將 messageid 與錯誤相關聯。

Proxy 要求

organization

organization.name 屬性的容器。

下表說明 organization 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
organization.name 字串 唯讀

機構名稱。

Proxy 要求

如要進一步瞭解機構,請參閱「瞭解機構」。

proxy

API Proxy 設定。

下表說明 proxy 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
proxy.basepath 字串 唯讀

API Proxy 設定中的「Base Path」值。基準路徑是指網址中主機後方的 URI 片段。條件式流程 URI 會遵循基本路徑。

在網址「http://myorg-test.apigee.net/v2/weatherapi/forecastrss?w=12797282」中:

  • 主機為「myorg-test.apigee.net」(包含機構名稱和環境)
  • 基本路徑為「/v2/weatherapi」

您唯一能得知這項資訊的方式,就是查看 API Proxy 定義或檢查 proxy.basepath 變數的值。代理路徑後置字串會接在基準路徑 (「/forecastrss」) 和任何查詢參數之後。

如果您在 API 代理程設定中定義動態基本路徑 (例如「/v2/*/weatherapi」),即使基本路徑會解析為靜態值 (例如「/v2/foo/weatherapi」),這個變數也會設為動態路徑 (「/v2/*/weatherapi」)。

Proxy 要求
proxy.client.ip 字串 唯讀

Inbound 呼叫的 X-Forwarded-For 位址,也就是 Edge 從上次外部 TCP 握手收到的 IP 位址。這可能是呼叫用戶端或負載平衡器。

Proxy 要求
proxy.name 字串 唯讀

ProxyEndpoint 的名稱屬性設定。

Proxy 要求
proxy.pathsuffix 字串 唯讀

從用戶端傳送並在 ProxyEndpoint 中接收的 API Proxy 路徑後置字串值。

定義 basepath 為可用於識別 API 代理程式的路徑元件。API Proxy 的公開網址包含貴機構名稱、Proxy 部署環境、basepath、basepath 後置字串和任何查詢參數。

舉例來說,在對 http://myorg-test.apigee.net/v2/weatherapi/forecastrss?w=12797282 提出要求時,basepath 後置字串為「/forecastrss」。

Proxy 要求
proxy.url 字串 唯讀

取得與 ProxyEndpoint 收到的 ProxyRequest 相關聯的完整網址,包括任何存在的查詢參數。如果 Proxy 是使用 <LocalTargetConnection> 叫用,以便執行 Proxy 鏈結,則網址的伺服器一律會是 localhost

如需使用原始主機建構 request 網址的範例,請參閱「存取要求訊息」。

Proxy 要求

如要進一步瞭解如何使用 API Proxy,請參閱「瞭解 API 和 API Proxy」。

ratelimit

在執行配額或 SpikeArrest 政策時填入。

下表說明 ratelimit 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
ratelimit.policy_name.allowed.count 唯讀 傳回允許的配額數量。 PostClientFlow
ratelimit.policy_name.used.count 唯讀 傳回在配額間隔內目前使用的配額。 PostClientFlow
ratelimit.policy_name.available.count 唯讀 傳回配額間隔內的可用配額數量。 PostClientFlow
ratelimit.policy_name.exceed.count 唯讀 超過配額後會傳回 1。 PostClientFlow
ratelimit.policy_name.total.exceed.count 唯讀 超過配額後會傳回 1。 PostClientFlow
ratelimit.policy_name.expiry.time 唯讀

傳回世界標準時間 (以毫秒為單位),用於判斷配額到期時間和新配額間隔開始時間。

如果配額政策的類型為 rollingwindow,這個值就無效,因為配額間隔不會到期。

PostClientFlow
ratelimit.policy_name.identifier 字串 唯讀 傳回附加至政策的 (用戶端) ID 參照 PostClientFlow
ratelimit.policy_name.class.allowed.count 唯讀 傳回類別中定義的允許配額數量 PostClientFlow
ratelimit.policy_name.class.used.count 唯讀 傳回類別中已使用的配額 PostClientFlow
ratelimit.policy_name.class.available.count 唯讀 傳回類別中可用的配額數量 PostClientFlow
ratelimit.policy_name.class.exceed.count 唯讀 傳回目前配額間隔內,超過類別上限要求的數量 PostClientFlow
ratelimit.policy_name.class.total.exceed.count 唯讀 傳回在所有配額間隔中,超過課程上限要求的總數,也就是所有配額間隔的 class.exceed.count 總和。 PostClientFlow
ratelimit.policy_name.failed 布林值 唯讀

表示政策是否失敗 (true 或 false)。

PostClientFlow

如要瞭解詳情,請參考下列資源:

request

完整要求,包括任何存在的酬載。

如要進一步瞭解要求資料,請參閱「如何將要求資料傳送至後端伺服器?」。

下表說明 request 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
request message 唯讀

完整要求,包括任何存在的酬載。

Proxy 要求
request.content 字串 讀取/寫入

取得或設定要求訊息的酬載。

Proxy 要求
request.formparam.param_name 字串 讀取/寫入

在用戶端應用程式傳送的要求中,取得或設定指定表單參數的值。

Proxy 要求
request.formparam.param_name.
 values
集合 唯讀

請求中特定表單參數的所有值,格式為以逗號分隔的清單。

舉例來說,如果酬載是「a=hello&x=greeting&a=world」,則 request.formparam.a.values 的值為「['hello', 'world']」。

Proxy 要求
request.formparam.param_name.
 values.count
整數 唯讀

與要求相關聯的指定表單參數所有值的計數。

Proxy 要求
request.formparam.param_name.N 字串 讀取/寫入

訊息中第 n 個特定表單參數的值。舉例來說,如果表單字串為「a=hello&a=world」,則 request.formparam.a.1 的傳回值為「hello」。

Proxy 要求
request.formparams.count 整數 唯讀

與從用戶端應用程式傳送的要求相關聯的所有表單參數數量。

Proxy 要求
request.formparams.names 集合 唯讀

與要求相關聯的所有表單參數名稱清單。

Proxy 要求
request.formstring 字串 唯讀

用戶端應用程式傳送的要求中完整的 formparam

例如「name=test&type=first&group=A」。

Proxy 要求
request.header.header_name 字串 讀取/寫入

取得或設定要求中特定標頭的值。如果標頭包含半形逗號,您在讀取時只會收到文字的部分片段,直到遇到第一個半形逗號為止。

如要整個標頭,請使用 request.header.header_name.values 表單。

Proxy 要求
request.header.header_name.N 字串 讀取/寫入

要求中第 N 個特定標頭值的值。Apigee Edge 會以半形逗號分隔標頭文字值。請注意,用於 N 的值索引是以 1 為基數,而非 0。

舉例來說,如果 Cache-control 標頭為「public, maxage=16544」,request.header.cache-control.1 的傳回值就是「maxage=16544」。

Proxy 要求
request.header.header_name.
 values
集合 唯讀

要求中特定標頭的所有值。

Proxy 要求
request.header.header_name.
 values.count
整數 唯讀

要求中特定標頭的所有值計數。

Proxy 要求
request.headers.count 整數 唯讀

要求中所有標頭的計數。

Proxy 要求
request.headers.names 集合 唯讀

要求中所有標頭的名稱。

Proxy 要求
request.path 字串 唯讀

未經代理的後端服務資源路徑 (不含主機),不含查詢參數。

舉例來說,如果後端服務的 URI 為「https://example.com/rest/api/latest」,則 request.path 的值為「/rest/api/latest」。

Proxy 要求
request.queryparam.param_name 字串 讀取/寫入

要求中找到的特定查詢參數值。

Proxy 要求
request.queryparam.param_name.N 字串 讀取/寫入

請求中 Nth 查詢參數的值。

舉例來說,如果 request.querystring 是「a=hello&a=world」,則 request.queryparam.a.1 的傳回值是「hello」。

舉例來說,如果您想為單一查詢參數名稱寫入多個值,例如「type=siteid:1&type=language:us-en&type=currency:USD」,請設定以下內容:

  • request.queryparam.type.1 為「siteid:1」
  • request.queryparam.type.2 變更為「language:zh-TW」
  • request.queryparam.type.3 變更為「currency:USD」
Proxy 要求
request.queryparam.param_name.
 values
集合 唯讀

要求中特定查詢參數的所有值,格式為以逗號分隔的清單。

舉例來說,如果 request.querystring 是「a=hello&b=lovely&a=world」,則 request.queryparam.a.values 的值為「['hello', 'world']」。

Proxy 要求
request.queryparam.param_name.
 values.count
整數 唯讀

要求中特定查詢參數的所有值計數。

Proxy 要求
request.queryparams.count 整數 唯讀

要求中所有查詢參數的數量。

Proxy 要求
request.queryparams.names 集合 唯讀

要求中所有查詢參數的名稱。

如要使用 JavaScript 逐一處理查詢參數名稱,請參閱 Apigee Community 中的「How do you iterate Collection from "request.queryparams.names" in JS?」

Proxy 要求
request.querystring 字串 唯讀

用戶端應用程式傳送要求中的完整查詢參數清單。

舉例來說,如果要求為「http://host.com/123?name=first&surname=second&place=address」,則這個變數會傳回「name=first&surname=second&place=address」。

Proxy 要求
request.transportid 字串 唯讀

要求 ID 為 TransportMessage 類型,這是內容物件。

Proxy 要求
request.transport.message Transport-Message 唯讀

要求的類型為 TransportMessage,這是一種內容物件。

Proxy 要求
request.uri 字串 唯讀

在 API Proxy 中,ProxyEndpoint 中的 Proxy <BasePath> (除了 Proxy 的基準網址) 會對應至 TargetEndpoint 中的目標服務網址。例如:

<ProxyEndpoint>
...
  <BasePath>/my-mock-proxy</BasePath>

指向

<TargetEndpoint>
...
  <HTTPTargetConnection>
    http://mocktarget.apigee.net
  </HTTPTargetConnection>

要求中,request.uri 是 Proxy 基礎路徑 + 位址的其餘部分,包括查詢參數。

回應中,request.uri 是 HTTPTargetConnection 後面的地址剩餘部分,包括查詢參數。

差異在於原始要求進入 Proxy,但 Proxy 會向目標服務提出另一項要求。

假設系統向範例 Proxy 發出以下呼叫,該 Proxy 的基本路徑為「/my-mock-proxy」:

http://my_org-test.apigee.net/my-mock-proxy/user?user=Dude

而 Proxy 呼叫如下:

http://mocktarget.apigee.net

這個參數會將「/user?user=Dude」附加到該網址。

  • 要求:request.uri = "/my-mock-proxy/user?user=Dude"
  • 回應:request.uri = "/user?user=Dude"
Proxy 要求 (回應不同)
request.url 字串 唯讀

對目標端點提出要求的完整網址,包括查詢字串參數,但不含連接埠號碼 (如有指定)。

舉例來說,如果您呼叫的代理程式是「http://my_org-test.apigee.net/my-mock-proxy/user?user=Dude」,而目標端點是「http://example.com:8080」,則值為:

  • 要求:不適用
  • 回應:「http://example.com/user?user=Dude」
目標回應
request.verb 字串 唯讀

用於要求的 HTTP 動詞。例如「GET」、「PUT」和「DELETE」。

Proxy 要求
request.version 字串 唯讀

要求的 HTTP 版本。例如「1.1」。

Proxy 要求

response

完整回應,包括任何存在的酬載。

下表說明 response 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
response message 讀取/寫入

目標傳回的完整回應訊息。

目標回應
response.content 字串 讀取/寫入

目標傳回的回應訊息酬載內容。

目標回應
response.formparam.param_name 字串 讀取/寫入

回應中的表單參數值。

目標回應
response.formparam.param_name.
 values.count
整數 唯讀

回應中指定表單參數的所有值計數。

目標回應
response.formparams.count 整數 唯讀

回應中所有表單參數的計數。

目標回應
response.formparams.names 集合 唯讀

回應中所有表單參數的名稱。

目標回應
response.header.header_name 字串 讀取/寫入

在回應中取得或設定指定 HTTP 標頭的值。

如果標頭文字含有半形逗號,Apigee Edge 會推斷多個值。在這種情況下,response.header.header_name 只會傳回第一個值。

如要讀取整個標頭,請使用 response.header.header_name.values 表單。

目標回應
response.header.header_name.
 values
集合 唯讀

回應中指定 HTTP 標頭的所有值。

目標回應
response.header.header_name.
 values.count
整數 唯讀

回應中指定 HTTP 標頭的所有值計數。

目標回應
response.header.header_name.N 字串 讀取/寫入

回應中 第 N 個 特定標頭值的值。Apigee Edge 會以半形逗號分隔標頭文字值。請注意,用於 N 的值索引是以 1 為基數,而非 0。

舉例來說,如果 Cache-control 標頭是「public, maxage=16544」,那麼 response.header.cache-control.1 就會傳回「maxage=16544」。

目標回應
response.headers.count 整數 唯讀

回應中所有標頭的計數。

目標回應
response.headers.names 集合 唯讀

回應中所有標頭的名稱。

目標回應
response.reason.phrase 字串 讀取/寫入

特定要求的回應原因詞組。

目標回應
response.status.code 整數 讀取/寫入

要求傳回的回應代碼。您可以使用這個變數覆寫儲存在 message.status.code 中的回應狀態碼。詳情請參閱 message

目標回應
response.transport.message 字串 唯讀

回應的類型為 TransportMessage,這是一種內容物件。

目標回應

route

指定 <RouteRule> 和 TargetEndpoint 的名稱。

下表說明 route 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
route.name 字串 唯讀

在 ProxyEndpoint 中執行的 <RouteRule> 名稱。例如「default」。RouteRule 會參照要執行的 API Proxy TargetEndpoint。

指定要求
route.target 字串 唯讀

已執行的 TargetEndpoint 名稱。例如「default」。

指定要求

router

router.uuid 屬性的容器,已淘汰。

下表說明 router 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
router.uuid 字串 唯讀

已淘汰,並傳回空值。(舊稱處理 Proxy 的路由器的 UUID)。

Proxy 要求

servicecallout

說明 ServiceCallout 政策的 TargetEndpoint。

下表說明 servicecallout 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
servicecallout.policy_name.expectedcn 字串 讀取/寫入

ServiceCallout 政策中所指的 TargetEndpoint 預期通用名稱。只有在 TargetEndpoint 參照 TLS/SSL 端點時,這項屬性才有意義。

Proxy 要求
servicecallout.policy_name.target.url 字串 讀取/寫入

特定 ServiceCallout 政策的 TargetEndpoint 網址。

Proxy 要求
servicecallout.requesturi 字串 讀取/寫入

ServiceCallout 政策的 TargetEndpoint URI。URI 是 TargetEndpoint 網址,不含通訊協定和網域規格。

Proxy 要求

system

指定系統的 IP 位址,以及 Proxy 的詳細資料。

下表說明 system 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
system.interface.interface_name 字串 唯讀

系統的 IP 位址。

Proxy 要求
system.pod.name 字串 唯讀

執行 Proxy 的 Pod 名稱。

Proxy 要求
system.region.name 字串 唯讀

執行 Proxy 的資料中心 區域名稱。

Proxy 要求
system.time 字串 唯讀

讀取這個變數的時間。例如「Wed, 21 Aug 2013 19:16:47 UTC」。

這個值是 system.timestamp 對應值的字串表示法。例如,「Wed, 21 Aug 2013 19:16:47 UTC」對應的時間戳記值為「1377112607413」。

Proxy 要求
system.time.year 整數 唯讀

system.time 的年份部分。

Proxy 要求
system.time.month 整數 唯讀

system.time 的月份部分。

Proxy 要求
system.time.day 整數 唯讀

system.time 的日期部分。

Proxy 要求
system.time.dayofweek 整數 唯讀

system.time 的星期幾部分。

Proxy 要求
system.time.hour 整數 唯讀

system.time 的小時部分。

Proxy 要求
system.time.minute 整數 唯讀

system.time 的分鐘部分。

Proxy 要求
system.time.second 整數 唯讀

system.time 的第二部分。

Proxy 要求
system.time.millisecond 整數 唯讀

system.time 的毫秒部分。

Proxy 要求
system.time.zone 字串 唯讀

系統的時區。

Proxy 要求
system.timestamp 唯讀

64 位元 (long) 整數,代表讀取這個變數的時間。這個值是自世界標準時間 1970 年 1 月 1 日午夜起經過的毫秒數。例如「1534783015000」。

Proxy 要求
system.uuid 字串 唯讀

處理 Proxy 的訊息處理器的 UUID。

Proxy 要求

target

說明要求的目標。

下表說明 target 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
target.basepath 字串 唯讀

代理程式 TargetEndpoint 中定義的目標服務資源路徑 (不含網域),不含查詢參數。

舉例來說,假設 API Proxy 呼叫下列目標:

<TargetEndpoint name="default">
...
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net/user?user=Dude</URL>
  </HTTPTargetConnection>

在這個範例中,target.basepath 為「/user」。

如果目標是:

<TargetEndpoint name="default">
...
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net</URL>
  </HTTPTargetConnection>

target.basepath 會為空值。

目標要求
target.copy.pathsuffix 布林值 讀取/寫入

如果設為「true」,從 ProxyEndpoint 轉送至 TargetEndpoint 的要求會保留路徑後置字串 (ProxyEndpoint 基礎路徑中定義的 URI 後面的 URI 路徑片段)。

目標要求
target.copy.queryparams 布林值 讀取/寫入

如果為「true」,從 ProxyEndpoint 轉送至 TargetEndpoint 的要求會保留查詢參數。

目標要求
target.country 字串 唯讀

目標伺服器提供的 TLS/SSL 憑證所屬國家/地區

目標回應
target.cn 字串 唯讀

TargetEndpoint 的一般名稱。只有在 TargetEndpoint 參照 TLS/SSL 端點時,這項屬性才有意義。

指定要求
target.email.address 字串 唯讀

目標伺服器提供的 TLS/SSL 憑證電子郵件地址

目標回應
target.expectedcn 字串 讀取/寫入

TargetEndpoint 的預期通用名稱。只有在 TargetEndpoint 參照 TLS/SSL 端點時,這項屬性才有意義。

Proxy 要求
target.host 字串 唯讀

目標服務的網域名稱,會將回應傳回至 API Proxy。

目標回應
target.ip 字串 唯讀

傳回 API 代理程式回應的目標服務 IP 位址。

目標回應
target.locality 字串 唯讀

目標伺服器提供的 TLS/SSL 憑證所在地 (城市)

目標回應
target.name 字串 唯讀

從目標端點傳送訊息的目標。

指定要求
target.organization 字串 唯讀

目標伺服器提供的 TLS/SSL 憑證組織。

目標回應
target.organization.unit 字串 唯讀

目標伺服器提供的 TLS/SSL 憑證組織單位。

目標回應
target.port 整數 唯讀

目標服務的通訊埠號碼,用於傳回 API Proxy 的回應。

目標回應
target.received.end.time 字串 唯讀

以字串形式表示的時間,表示 TargetEndpoint 完成接收目標回應的時間。例如「Wed, 21 Aug 2013 19:16:47 UTC」。

這個時間值是相應 32 位元時間戳記數量的字串表示法。例如,「Wed, 21 Aug 2013 19:16:47 UTC」對應的時間戳記值為「1377112607413」。

目標回應
target.received.end.
  timestamp
唯讀

時間戳記值,指定 TargetEndpoint 完成接收目標回應的時間。例如「1534783015000」。這個值是 64 位元 (長) 整數,可指定自世界標準時間 1970 年 1 月 1 日午夜起經過的毫秒數。

目標回應
target.received.start.time 字串 唯讀

以字串形式表示的時間,表示 TargetEndpoint 開始接收目標回應的時間。例如「Wed, 21 Aug 2013 19:16:47 UTC」。

這個時間值是相應 32 位元時間戳記數量的字串表示法。例如,「Wed, 21 Aug 2013 19:16:47 UTC」對應的時間戳記值為「1377112607413」。

目標回應
target.received.start.
  timestamp
唯讀

指定 TargetEndpoint 開始接收目標回應時間的時間戳記值。例如「1534783015000」。這個值是 64 位元 (長) 整數,可指定自世界標準時間 1970 年 1 月 1 日午夜起經過的毫秒數。

目標回應
target.scheme 字串 唯讀

範圍開始:目標回應
類型:字串
權限:讀取/寫入

傳回 http 或 https,視要求訊息而定。

指定要求
target.sent.end.time 字串 唯讀

代理程式停止將要求傳送至 TargetEndpoint 中指定的網址的時間,以字串形式表示。例如「Wed, 21 Aug 2013 19:16:47 UTC」。

這個時間值是相應 32 位元時間戳記數量的字串表示法。例如,「Wed, 21 Aug 2013 19:16:47 UTC」對應的時間戳記值為「1377112607413」。

指定要求
target.sent.end.timestamp 唯讀

時間戳記值,指定 Proxy 完成將要求傳送至 TargetEndpoint 中指定的網址的時間。例如「1377112607413」。這個值是 64 位元 (長) 整數,包含自世界標準時間 1970 年 1 月 1 日午夜起經過的毫秒數。

指定要求
target.sent.start.time 字串 唯讀

代理伺服器開始將要求傳送至 TargetEndpoint 中指定的網址的時間,以字串形式表示。例如「Wed, 21 Aug 2013 19:16:47 UTC」。

這個時間值是相應 32 位元時間戳記數量的字串表示法。例如,「Wed, 21 Aug 2013 19:16:47 UTC」對應的時間戳記值為「1377112607413」。

指定要求
target.sent.start.timestamp 唯讀

時間戳記值,指定 Proxy 開始將要求傳送至 TargetEndpoint 中指定的網址的時間。例如「1534783015000」。這個值是 64 位元 (長) 整數,可指定自世界標準時間 1970 年 1 月 1 日午夜起經過的毫秒數。

目標要求
target.ssl.enabled 布林值 唯讀

TargetEndpoint 是否在 TLS/SSL 上執行。

Proxy 要求
target.state 字串 唯讀

目標伺服器提供的 TLS/SSL 憑證狀態。

目標回應
target.url 字串 讀取/寫入

在 TargetEndpoint XML 檔案中設定的網址,或動態目標網址 (如果在訊息流程中設定 target.url)。這個變數不包含任何其他路徑元素或查詢參數。如果在範圍外呼叫或未設定,則會傳回空值。

目標要求

variable

variable.expectedcn 屬性的容器。

下表說明 variable 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
variable.expectedcn 字串 讀取/寫入

如果常見名稱在 TLS/SSL 上執行,就會公開這個變數。

Proxy 要求

如要進一步瞭解如何使用 TLS,請參閱 TLS/SSL 簡介

virtualhost

指定虛擬主機的詳細資料。

下表說明 virtualhost 變數的屬性:

屬性 類型 讀取/寫入 說明 範圍開始
virtualhost.aliases.values 字串陣列 唯讀

在特定要求期間命中的虛擬主機主機別名。

Proxy 要求
virtualhost.name 字串 唯讀

提供原始用戶端要求的虛擬主機名稱。

Proxy 要求
virtualhost.ssl.enabled 布林值 唯讀

如果虛擬主機設定中已啟用 TLS/SSL,則會傳回「true」。

Proxy 要求

如要進一步瞭解如何使用虛擬主機,請參閱「設定虛擬主機」。