流程變數參考資料

您目前查看的是 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 的名稱。例如「我的 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 字串 唯讀

Proxy 在 ProxyEndpoint 接收來自原始用戶端的要求時,以字串形式表示的時間。例如:Wed, 21 Aug 2013 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 的原始用戶端接收要求的時間 (以字串形式表示)。例如:Wed, 21 Aug 2013 19:16:47 UTC

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

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

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

Proxy 要求
client.scheme 字串 唯讀

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

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

以字串形式表示的時間,指出 Proxy 從 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 唯讀 Proxy 開始從 ProxyEndpoint 將回應傳送給用戶端的時間。這個值以 64 位元 (長) 整數表示,內含自世界標準時間 1970 年 1 月 1 日午夜起經過的毫秒數。 PostClientFlow
client.ssl.enabled 字串 唯讀

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

Proxy 要求
client.state 字串 唯讀

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

Proxy 要求

current

包含目前 API Proxy 流程的相關資訊。

下表說明 current 變數的屬性:

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

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

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:en-us」
  • 對「currency:USD」訊息表示 message.queryparam.type.3
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 社群貼文:How do you iterate Collection from "request.queryparams.names" in JS? 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 設定中的基本路徑值。基本路徑是網址中主機後方的 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 字串 唯讀

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

Proxy 要求
proxy.name 字串 唯讀

為 ProxyEndpoint 設定的名稱屬性。

Proxy 要求
proxy.pathsuffix 字串 唯讀

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

basepath 定義為可專門識別 API Proxy 的路徑元件。 API Proxy 的公開網址包含機構名稱、Proxy 部署所在的環境、基礎路徑、基礎路徑後置字串,以及任何查詢參數。

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

Proxy 要求
proxy.url 字串 唯讀

取得與 ProxyEndpoint 收到的 Proxy 要求相關聯的完整網址,包括任何查詢參數。如果透過 <LocalTargetConnection> 叫用 Proxy 執行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 唯讀

傳回 UTC 時間 (以毫秒為單位),用於判斷配額何時到期,以及新的配額間隔何時開始。

如果配額政策的類型為 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 字串 唯讀

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

舉例來說,如果後端服務的 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:en-us」
  • 對「currency:USD」訊息表示 request.queryparam.type.3
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 社群中的「 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 字串 唯讀

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

舉例來說,如果您呼叫範例 Proxy「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 字串 讀取/寫入

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

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

特定 ServiceCallout 政策的 TargetEndpoint URL。

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 位元 (長) 整數。這個值是自世界標準時間 1970 年 1 月 1 日午夜起經過的毫秒數。例如「1534783015000」。

Proxy 要求
system.uuid 字串 唯讀

處理 Proxy 的訊息處理器 UUID。

Proxy 要求

target

說明要求目標。

下表說明 target 變數的屬性:

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

目標服務的資源路徑 (不含網域),不包括查詢參數,定義於 Proxy 的 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 的要求會保留路徑尾碼 (URI 路徑片段,位於 ProxyEndpoint 基本路徑中定義的 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 字串 唯讀

目標服務的 IP 位址,會將回應傳回 API Proxy。

目標回覆
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 字串 唯讀

以字串形式表示的時間,Proxy 會在這個時間停止將要求傳送至 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 字串 唯讀

Proxy 開始將要求傳送至 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 要求

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