端點屬性參考資料

查看 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

3000

目標連線逾時。如果連線成功,Edge 會傳回 HTTP 503 狀態碼 逾時。在某些情況下,系統會在 LoadBalancer 回應內傳回 HTTP 504 狀態碼 在 TargetServer 定義 逾時。

io.timeout.millis 55000

如果指定的毫秒數沒有可讀取的資料,或者通訊端 無法針對指定的毫秒數寫入資料,則交易 視為逾時。

  • 如果寫入 HTTP 要求時發生逾時,408, Request Timeout
  • 如果讀取 HTTP 回應時發生逾時情形,請504, Gateway Timeout

這個值一律應小於 虛擬主機的 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,就會指定 Proxy 設定: http.properties (僅限地端部署部署作業),然後目標連線 會設定成使用指定的 Proxy。
use.proxy.tunneling true 如果設為 true,並已在 http.properties (僅限地端部署部署作業),然後指定 連線已設為使用指定通道。如果目標使用 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

根據預設 (false),HTTP 要求酬載會讀取到緩衝區中,以及 可以在酬載工作上正常運作。當酬載大於 緩衝區空間 (10 MB),您可以將此 屬性設為 true。如果為 true,HTTP 要求酬載不會讀取到緩衝區中;他們 以原樣串流至目標端點在此情況下,凡是 會略過 TargetEndpoint 要求流程中的酬載。另請參閱串流要求與回應

response.streaming.enabled false

根據預設 (false),HTTP 回應酬載會讀取到緩衝區中,以及 可以在酬載工作上正常運作。當酬載大於 緩衝區空間 (10 MB),您可以將此 屬性設為 true。如果為 true,HTTP 回應酬載不會讀取到緩衝區中;他們 以原樣串流至 ProxyEndpoint 回應流程。在此情況下,任何需要執行 繞在 TargetEndpoint 回應流程中的酬載上作業。其他參考資訊 串流要求和 回應

success.codes 不適用

根據預設,Apigee Edge 會將 HTTP 代碼 4XX5XX 視為錯誤,且會處理 HTTP 代碼 1XX2XX3XX 是成功的。這個屬性可明確定義成功代碼, 例如,2XX, 1XX, 505 會將任何 100200505 HTTP 回應代碼視為 成效。

設定這個屬性會覆寫預設值。因此,如果您想在 請將 HTTP 代碼 400 設為預設成功代碼清單,請將這個屬性設為:

&lt;Property name="success.codes">1XX,2XX,3XX,400</Property>

如果只想將 HTTP 代碼 400 視為成功代碼,請設定屬性 為:

&lt;Property name="success.codes">400</Property>

將 HTTP 代碼 400 設為唯一的成功代碼後,1XX2XX3XX 代碼就會是 視為失敗

compression.algorithm 不適用 根據預設,Apigee Edge 會使用相同的壓縮類型,將要求轉送至目標 做為用戶端要求如果是使用 gzip 等用戶端 壓縮後,Apigee Edge 會使用 gzip 壓縮將要求轉送至目標。如果 而 Apigee Edge 會將回應轉至 用戶端的接聽程式。支援的值如下:
  • gzip:一律使用 gzip 壓縮格式傳送郵件
  • deflate:一律使用延遲壓縮功能傳送訊息
  • none (無):一律傳送訊息,不經過任何壓縮

另請參閱: Apigee 是否支援使用 GZIP/延遲壓縮進行壓縮/解壓縮?

request.retain.headers.
enabled
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.
enabled
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.
enabled
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.
enabled
false 根據預設 (false),HTTP 要求酬載會讀取到緩衝區中,以及可以 在酬載工作上正常運作。當酬載大於 緩衝區空間 (10 MB),您可以將此 屬性設為 true。如果為 true,HTTP 要求酬載不會讀取到緩衝區中;他們 依照原樣串流至 TargetEndpoint 要求流程。採取這個做法時 它會略過 ProxyEndpoint 要求流程中的酬載。另請參閱串流要求與回應
response.streaming.
enabled
false 根據預設 (false),HTTP 回應酬載會讀取到緩衝區中,以及 可以在酬載工作上正常運作。當酬載大於 緩衝區空間 (10 MB),您可以將此 屬性設為 true。如果為 true,HTTP 回應酬載不會讀取到緩衝區中;他們 以原樣串流至用戶端在此情況下, 已略過 ProxyEndpoint 回應流程。另請參閱串流要求與回應
compression.algorithm 不適用

根據預設,Apigee Edge 會遵循所有收到訊息的壓縮類型組合。適用對象 例如,用戶端提交使用 gzip 壓縮、Apigee Edge 格式的要求 使用 gzip 壓縮將要求轉送至目標。您可以設定壓縮 在 TargetEndpoint 上設定這個屬性或 ProxyEndpoint。支援的值如下:

  • gzip:一律使用 gzip 壓縮格式傳送郵件
  • deflate:一律使用延遲壓縮功能傳送訊息
  • none (無):一律傳送訊息,不經過任何壓縮

另請參閱: Apigee 是否支援使用 GZIP/延遲壓縮進行壓縮/解壓縮?

api.timeout 不適用

設定個別 API Proxy 的逾時時間

您可以設定 API Proxy streaming 已啟用, ,並設為 504 Gateway Timeout 狀態。主要用途適用於使用 API Proxy 的客戶 可能會耗費較長的時間舉例來說,假設您需要特定 Proxy 在 3 個 分鐘。以下說明您使用 api.timeout 的方式。

  1. 首先,請務必設定負載平衡器、路由器和訊息處理器 逾時。
  2. 接著,設定相關 Proxy 在三分鐘設為逾時。請指定 毫秒。例如:<Property name="api.timeout">180000</Property>
  3. 不過請注意,提高系統逾時可能會造成效能問題 因為所有不含 api.timeout 設定的 Proxy 都會使用新、較高的負載 負載平衡器、路由器和訊息處理器逾時。因此請設定其他 API Proxy 不用較長的逾時時間來使用較低的逾時時間例如,下列指令會將 API Proxy 在 1 分鐘後逾時:
    <Property name="api.timeout">60000</Property>

您無法使用變數設定這個屬性。

無法修改邊緣逾時的客戶也可以設定 API Proxy 逾時,只要逾時時間比標準 Edge 訊息處理器還短 設為 57 秒的逾時值

請參閱為 Edge 設定 io.timeout.millis 和 api.timeout 瞭解詳情。

為 Edge 設定 io.timeout.millis 和 api.timeout

在 Edge 上,io.timeout.millisapi.timeout 的作業 彼此相關。 在每個要求 API Proxy 的要求上:

  1. 路由器將其逾時值傳送至訊息處理器。路由器逾時值為 由虛擬主機設定的 proxy_read_timeout 值 處理要求,或預設的逾時值為 57 秒。
  2. 訊息處理器會接著設定 api.timeout
    1. 如果「沒有」在 Proxy 層級設定 api.timeout,請設為路由器逾時。
    2. 如果 api.timeout 是在 Proxy 層級設定,請在訊息處理器中,將其設為 路由器逾時期限較短或 api.timeout 值。
  3. api.timeout 值會指定 API Proxy 完成的時間長度上限 向回應傳送 API 要求

    執行 API Proxy 中的每個政策後 或在訊息處理程式傳送要求至目標端點之前 訊息處理器會計算 (api.timeout - 從要求開始時經過的時間)。 如果值小於 0,表示處理要求的時間上限已過,且 訊息處理器傳回 504

  4. io.timeout.millis 的值會指定目標端點的時間長度上限 就必須做出回應

    連線至目標端點之前,訊息處理器會決定 (api.timeout - 從要求開始時經過的時間) 和 io.timeout.millis。 然後將 io.timeout.millis 設為該值。

    • 如果寫入 HTTP 要求時發生逾時,408, Request Timeout
    • 如果讀取 HTTP 回應時發生逾時情形,請504, Gateway Timeout

關於 Node.js 應用程式的 ScriptTarget

ScriptTarget 元素可用於將 Node.js 應用程式整合至 Proxy。適用對象 有關使用 Node.js 和 ScriptTarget 的資訊,請參閱:

關於 HostedTarget 端點

空白的 <HostedTarget/> 標記會指示 Edge 使用為 Node.js 做為目標 部署到託管目標環境的應用程式。詳情請參閱 代管目標總覽