您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件。 資訊
本主題說明可在 TargetEndpoint 和 ProxyEndpoint 設定中設置的傳輸屬性,以便控管訊息傳遞和連線行為。如需 TargetEndpoint 和 ProxyEndpoint 設定的完整涵蓋範圍,請參閱 API Proxy 設定參考資料。
TargetEndpoint 傳輸屬性
TargetEndpoint 設定中的 HTTPTargetConnection 元素可定義一組 HTTP 傳輸屬性。您可以使用這些屬性來設置傳輸層級設定。
您可以在 TargetEndpoint HTTPTargetConnection 元素上設定屬性,如下所示:
<TargetEndpoint name="default"> <HTTPTargetConnection> <URL>http://mocktarget.apigee.net</URL> <Properties> <Property name="supports.http10">true</Property> <Property name="request.retain.headers">User-Agent,Referer,Accept-Language</Property> <Property name="retain.queryparams">apikey</Property> </Properties> <CommonName>COMMON_NAME_HERE</CommonName> </HTTPTargetConnection> </TargetEndpoint>
TargetEndpoint 傳輸屬性規格
資源名稱 | 預設值 | 說明 |
---|---|---|
keepalive.timeout.millis |
60000 |
連線集區中目標連線的連線閒置逾時。如果集區中的連線閒置超過指定限制,系統就會關閉連線。 |
connect.timeout.millis |
|
目標連線逾時。如果連線逾時,邊緣會傳回 HTTP |
io.timeout.millis |
55000 |
如果指定的毫秒數沒有資料可供讀取,或是通訊端尚未準備好寫入指定的毫秒數資料,系統就會將交易視為逾時。
這個值應一律小於 虛擬主機的 Proxy_read_timeout 屬性值。 這個值應小於路由器用於與訊息處理器通訊的逾時時間。詳情請參閱「設定路由器逾時」。 詳情請參閱「為 Edge 設定 io.timeout.millis 和 api.timeout」相關說明。 |
supports.http10 |
true |
如果這是 true ,且用戶端傳送 1.0 要求,目標也會傳送 1.0 要求。否則,系統會將 1.1 要求傳送至目標。 |
supports.http11 |
true |
如果這是 true ,且用戶端傳送 1.1 要求,目標也會傳送 1.1 要求;否則,系統會將 1.0 要求傳送至目標。 |
use.proxy |
true |
如果設為 true ,且 http.properties 中指定了 Proxy 設定 (僅限地端部署部署),則目標連線會設為使用指定的 Proxy。 |
use.proxy.tunneling |
true |
如果設為 true ,並在 http.properties 中指定 Proxy 設定 (僅限地端部署部署作業),則目標連線會設為使用指定的通道。如果目標使用 TLS/SSL,系統會忽略這個屬性,訊息也會一律透過通道傳送。 |
enable.method.override |
false |
針對指定的 HTTP 方法,在向目標服務的傳出要求上設定 X-HTTP-Method-Override 標頭。例如,<Property
name="GET.override.method">POST</Property> |
*.override.method |
不適用 | 對於指定的 HTTP 方法,請在傳出要求上設定 X-HTTP-Method-Override 標頭。例如,<Property
name="GET.override.method">POST</Property> |
request.streaming.enabled |
false |
根據預設 ( |
response.streaming.enabled |
false |
根據預設 ( |
success.codes |
不適用 |
根據預設,Apigee Edge 會將 HTTP 代碼 設定這個屬性會覆寫預設值。因此,如要將 HTTP 代碼 <Property name="success.codes">1XX,2XX,3XX,400</Property> 如果只想將 HTTP 代碼 <Property name="success.codes">400</Property> 將 HTTP 代碼 |
compression.algorithm |
不適用 |
根據預設,Apigee Edge 會使用與用戶端要求相同的壓縮類型將要求轉送至目標。如果透過 gzip 壓縮等方式從用戶端收到要求,Apigee Edge 會使用 gzip 壓縮將要求轉送至目標。如果目標收到的回應使用延遲,Apigee Edge 會透過延遲將回應轉送至用戶端。支援的值如下:
|
request.retain.headers. |
true |
根據預設,Apigee Edge 一律會保留外寄郵件的所有 HTTP 標頭。設為 true 時,傳入要求中的所有 HTTP 標頭都會設為傳出要求。 |
request.retain.headers |
不適用 | 從要求中定義應針對向目標服務發出的傳出要求設定的 HTTP 標頭。例如,如要將 User-Agent 標頭傳遞,請將 request.retain.headers 的值設為 User-Agent 。以半形逗號分隔的清單形式指定多個 HTTP 標頭,例如 User-Agent,Referer,Accept-Language 。這個屬性會覆寫 request.retain.headers.enabled 。如果 request.retain.headers.enabled 設為 false ,系統仍會在傳出訊息中設定 request.retain.headers 屬性中指定的所有標頭。 |
response.retain.headers. |
true |
根據預設,Apigee Edge 一律會保留外寄郵件的所有 HTTP 標頭。設為 true 時,來自目標服務傳入回應中的所有 HTTP 標頭,都會先在傳出回應中設定,然後再傳送至 ProxyEndpoint。 |
response.retain.headers |
不適用 | 從回應中定義特定的 HTTP 標頭,標頭在傳送至 ProxyEndpoint 之前應在傳出回應中設定。舉例來說,如要將 Expires 標頭傳遞,請將 response.retain.headers 的值設為 Expires 。以半形逗號分隔的清單形式指定多個 HTTP 標頭,例如 Expires,Set-Cookie 。這個屬性會覆寫 response.retain.headers.enabled 。如果將 response.retain.headers.enabled 設為 false ,系統仍會在傳出訊息中設定 response.retain.headers 屬性中指定的所有標頭。 |
retain.queryparams. |
true |
根據預設,Apigee Edge 一律會保留傳出要求的所有查詢參數。設為 true 時,系統會在向目標服務的傳出要求上設定傳入要求中的所有查詢參數。 |
retain.queryparams |
不適用 | 定義要針對傳出要求設定的特定查詢參數。舉例來說,如要加入要求訊息中的查詢參數 apikey ,請將 retain.queryparams 設為 apikey 。系統會以逗號分隔清單指定多個查詢參數,例如 apikey,environment 。這個屬性會覆寫 retain.queryparams.enabled 。 |
ProxyEndpoint 傳輸屬性
ProxyEndpoint HTTPTargetConnection 元素定義了一組 HTTP 傳輸屬性。這些屬性可用於設定傳輸層級設定。
您可以在 ProxyEndpoint HTTPProxyConnection 元素上設定屬性,如下所示:
<ProxyEndpoint name="default"> <HTTPProxyConnection> <BasePath>/v1/weather</BasePath> <Properties> <Property name="request.streaming.enabled">true</Property> </Properties> <VirtualHost>default</VirtualHost> <VirtualHost>secure</VirtualHost> </HTTPProxyConnection> </ProxyEndpoint>
如要進一步瞭解虛擬主機,請參閱「關於虛擬主機」。
ProxyEndpoint 傳輸屬性規格
資源名稱 | 預設值 | 說明 |
---|---|---|
X-Forwarded-For |
false |
如果設為 true ,系統會將虛擬主機的 IP 位址加入傳出要求,做為 HTTP X-Forwarded-For 標頭的值。 |
request.streaming. |
false |
根據預設 (false ),HTTP 要求酬載會讀取到緩衝區中,以及可如預期對酬載工作運作的政策。如果酬載大於緩衝區大小 (10 MB),您可以將這項屬性設為 true 。如果為 true ,則 HTTP 要求酬載不會讀取到緩衝區,而是依原樣串流至 TargetEndpoint 要求流程。在此情況下,系統會略過在 ProxyEndpoint 要求流程中對酬載作業的任何政策。另請參閱串流要求與回應。 |
response.streaming. |
false |
根據預設 (false ),HTTP 回應酬載會讀取到緩衝區,以及可如預期對酬載工作運作的政策。如果酬載大於緩衝區大小 (10 MB),您可以將這項屬性設為 true 。如果為 true ,HTTP 回應酬載不會讀取到緩衝區,而是依原樣串流至用戶端。在這種情況下,系統會略過在 ProxyEndpoint 回應流程中對酬載運作的任何政策。另請參閱串流要求與回應。 |
compression.algorithm |
不適用 |
根據預設,Apigee Edge 會遵循為收到的所有訊息所設定的壓縮類型。舉例來說,在用戶端提交使用 gzip 壓縮的要求時,Apigee Edge 會使用 gzip 壓縮將要求轉送至目標。您可以在 TargetEndpoint 或 ProxyEndpoint 上設定這個屬性,將壓縮演算法設為明確套用。支援的值如下:
|
api.timeout |
不適用 |
設定個別 API Proxy 的逾時時間 您可以對 API Proxy 設定 (即使是已啟用串流者) 設為在經過指定時間後逾時並處於
無法使用變數設定這個屬性。 無法修改 Edge 逾時的客戶,也可以設定 API Proxy 逾時,前提是逾時時間短於標準 Edge 訊息處理工具的逾時時間 (57 秒)。 詳情請參閱「為 Edge 設定 io.timeout.millis 和 api.timeout」相關說明。 |
設定 Edge 的 io.timeout.millis 和 api.timeout
在邊緣,io.timeout.millis
和 api.timeout
的作業彼此相關。針對每個傳送至 API Proxy 的要求:
- 路由器會將逾時值傳送至訊息處理器。路由器逾時值可以是處理要求的虛擬主機設定的
proxy_read_timeout
值,或預設的逾時值 (57 秒)。 - 接著,訊息處理器會設定
api.timeout
:- 如果「沒有」在 Proxy 層級設定
api.timeout
,請設為路由器逾時。 - 如果
api.timeout
是設為 Proxy 層級,請在訊息處理器上將其設為路由器逾時時間較低的或api.timeout
值。
- 如果「沒有」在 Proxy 層級設定
api.timeout
值會指定 API Proxy 從 API 要求對回應執行的最長時間。執行 API Proxy 中的每項政策後,或在訊息處理器將要求傳送至目標端點之前,訊息處理器便會計算費用 (
api.timeout
- 從要求開始以來所經過的時間)。如果值小於零,則處理要求的時間上限已過,且訊息處理器會傳回504
。io.timeout.millis
值會指定目標端點所需的回應時間上限。在連線至目標端點之前,訊息處理器會判斷 (
api.timeout
- 從要求開始後所經過的時間) 和io.timeout.millis
中的較短時間。然後將io.timeout.millis
設為該值。- 如果寫入 HTTP 要求時發生逾時,系統會傳回
408, Request Timeout
。 - 如果讀取 HTTP 回應時發生逾時,會傳回
504, Gateway Timeout
。
- 如果寫入 HTTP 要求時發生逾時,系統會傳回
關於 Node.js 應用程式的 ScriptTarget
ScriptTarget 元素用於將 Node.js 應用程式整合至 Proxy。如要瞭解如何使用 Node.js 和 ScriptTarget,請參閱:
關於 HostedTarget 端點
空白的 <HostedTarget/>
標記會指示 Edge 使用已部署至代管目標環境的 Node.js 應用程式。詳情請參閱代管目標總覽。