要求和回應變數

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

向 API Proxy 發出要求時,視 API Proxy 的設定方式而定,您可以傳遞下列任一或所有資訊:

  • 要求標頭
  • 查詢參數
  • 表單資料
  • XML 或 JSON 酬載
  • 資源 URI

根據預設,要求中的所有資料都會從 ProxyEndpoint 傳送至 TargetEndpoint。因此,當 TargetEndpoint 向後端伺服器發出要求時,原始要求中的所有資訊都會傳遞至後端服務。

同樣地,Edge 從後端服務接收的回應也是如此。根據預設,回應中收到的所有資料,一律會傳遞至發出要求的應用程式。

如何將要求資料傳遞至後端伺服器?

下圖顯示 API Proxy 定義:

從 HTTP 用戶端透過 Proxy 端點傳遞至後端的目標端點的要求,以便傳送到 HTTP 服務。我們提供 Proxy 端點和目標端點的範例。

適用於這個 API Proxy:

  • API Proxy 虛擬主機:「預設」
  • 虛擬主機定義的網域:「http://myOrg-prod.apigee.net」
  • Proxy 基本路徑:「/v1/weather」
  • 由轉送規則指定的目標端點:「預設」
  • 目標網址:「http://weather.yahooapis.com」

用戶端應用程式使用下列 curl 指令向 API Proxy 發出 GET 要求:

curl -X GET http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282

請注意,這項要求含有資源「forecastrss」和一個查詢參數 w。Edge 會剖析要求,如下所示,並將要求的一部分指派給流程變數:

{request.verb} {proxy.basepath}/{proxy.pathsuffix}?{request.querystring}

資料流變數的設定值如下:

  • request.verb:「GET」
  • proxy.basepath:「/v1/weather」
  • proxy.pathsuffix:「預測值」
  • request.querystring:"w=12797282"

接著,TargetEndpoint 使用要求中的資訊向後端服務發出要求:

{request.verb} {target.basepath}/{proxy.pathsuffix}?{request.querystring}

請注意,要求中指定的資源和查詢參數如何自動納入傳送至後端伺服器的要求。根據 TargetEndpoint 的定義,要求包含以下格式:

curl -X GET http://weather.yahooapis.com/forecastrss?w=12797282

與查詢參數一樣,您在要求至 API Proxy 要求中的標頭或表單參數都會傳遞至後端伺服器。舉例來說,您在下方提出含有標頭的要求:

curl -X GET -H 'Content-type:application/xml' http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282

或者,你也可以填寫下方表單中的要求,提供標頭和表單資料:

curl -X POST -H "Content-type:application/json" -d \
  '{"email" : "janetutorialxml@example.com",
    "firstName" : "Jane",
    "lastName" : "Tutorial",
    "userName" : "jtutorialxml"
  }' \
  http://myOrg-prod.apigee.net/v1/register/user

在這兩個範例中,標頭和表單資料都會保持不變至後端服務。標頭會以 request.headers.countrequest.headers.names 等流程變數表示。表單資料是以 request.formparam.countrequest.formparam.names 等流程變數表示。

如何傳回回應資料?

根據預設,Edge 從後端服務接收到的所有資料,都會傳遞至發出要求的應用程式。如上所述,可透過 Edge 上的流程變數存取回應中傳回的資料。詳情請參閱流程變數參考資料

透過 API Proxy 存取要求和回應資料

在將要求資料傳送至後端伺服器前,您經常需要修改要求資料。例如:

  • 移除 Edge 用於驗證要求的安全性資訊。後端服務不需要這項資訊。
  • 新增傳送至後端服務的資料,例如追蹤使用者或收集數據分析資料。
  • 根據要求資料有條件地處理要求。舉例來說,單一 API Proxy 可以有多個目標端點。要求使用的 TargetEndpoint 是由要求資料決定。然後,您然後再從要求中移除這些資料,然後再傳送至後端服務。

回應中的資料也是如此。在處理回應時,API Proxy 可能會想要先修改資料,然後再將資料傳回給提出要求的應用程式。

存取要求訊息

您可以使用政策存取及變更要求訊息的部分內容。這些部分包括:

  • 標頭
  • 查詢參數
  • 表單參數
  • 來源 IP 位址
  • HTTP 訊息內文

在一般流程中,要求處理完畢後,Proxy 就會將轉換後的要求傳送至目標。

政策可以檢查要求變數,然後根據這些變數的內容轉換或拒絕要求。政策會透過設定適當的變數 (例如與要求標頭相對應的變數) 來轉換要求。

存取回覆訊息

透過適用於回應訊息的變數,政策可能會存取訊息元件,包括標頭、查詢參數和表單參數、來源 IP 位址、HTTP 訊息內文等等。

Proxy 會收到回應訊息,然後根據回應中評估的條件,套用至一連串政策,並可以修改或轉換回應。

政策可以檢查回應變數,然後根據這些變數的內容轉換或拒絕要求。政策會透過設定適當的變數 (例如與回應標頭對應的變數) 來轉換回應。

存取流程變數的通用政策

Edge 定義了可用於處理要求和回應資料的多項政策。這些政策包括: