設定後端服務
適用於:所有 APIM 層
使用 set-backend-service
原則將傳入要求重新導向至不同的後端,而不是 API 設定中為該作業指定的後端。 此原則會將傳入要求的後端服務基底 URL 變更為原則中指定的 URL 或後端。
參考後端實體可讓您在單一位置管理後端服務基底 URL 和其他設定,並跨多個 API 和作業重複使用它們。 同時實作 跨後端服務集區的流量負載平衡 和 斷路器規則,以保護後端免於太多要求。
注意
後端實體可透過 Azure 入口網站、管理 API 和 PowerShell來管理。
注意
請依照原則陳述式中提供的順序,來設定原則的元素和子元素。 深入了解如何設定或編輯 APIM 原則。
原則陳述式
<set-backend-service base-url="base URL of the backend service" backend-id="name of the backend entity specifying base URL of the backend service" sf-resolve-condition="condition" sf-service-instance-name="Service Fabric service name" sf-listener-name="Service Fabric listener name" />
屬性
屬性 | 描述 | 是必要欄位 | 預設 |
---|---|---|---|
base-url | 新的後端服務基底 URL。 允許使用原則運算式。 | base-url 或 backend-id 其中之一必須存在。 |
N/A |
backend-id | 後端的識別碼 (名稱),可路由傳送分割區的主要或次要複本。 允許使用原則運算式。 | base-url 或 backend-id 其中之一必須存在。 |
N/A |
sf-resolve-condition | 僅適用於後端為 Service Fabric 服務時。 識別新的解析是否必須重複呼叫 Service Fabric 後端的條件。 允許使用原則運算式。 | No | N/A |
sf-service-instance-name | 僅適用於後端為 Service Fabric 服務時。 允許在執行階段變更服務執行個體。 允許使用原則運算式。 | No | N/A |
sf-partition-key | 僅適用於後端為 Service Fabric 服務時。 指定 Service Fabric 服務的分割區索引鍵。 允許使用原則運算式。 | No | N/A |
sf-listener-name | 僅適用於後端為 Service Fabric 服務並使用 backend-id 指定時。 Service Fabric Reliable Services 可讓您在服務中建立多個接聽程式。 後端 Reliable Service 有多個接聽程式時,可使用此屬性來選取特定的接聽程式。 如果未指定此屬性,API 管理會嘗試使用沒有名稱的接聽程式。 沒有名稱的接聽程式通常適用於只有一個接聽程式的 Reliable Services。 允許使用原則運算式。 |
No | N/A |
使用方式
使用注意事項
目前,若您使用 backend-id
屬性定義基底 set-backend-service
原則,並在範圍內使用 <base />
繼承該基底原則,則只能透過使用 backend-id
屬性 (而非 base-url
屬性) 的原則來覆寫。
範例
根據查詢字串中的值路由傳送要求
在此範例中,set-backend-service
原則會根據查詢字串中傳遞的版本值,將要求路由傳送至不同於 API 中指定的後端服務。
<policies>
<inbound>
<choose>
<when condition="@(context.Request.Url.Query.GetValueOrDefault("version") == "2013-05")">
<set-backend-service base-url="http://contoso.com/api/8.2/" />
</when>
<when condition="@(context.Request.Url.Query.GetValueOrDefault("version") == "2014-03")">
<set-backend-service base-url="http://contoso.com/api/9.1/" />
</when>
</choose>
<base />
</inbound>
<outbound>
<base />
</outbound>
</policies>
一開始的後端服務基底 URL 是來自 API 設定。 因此要求 URL https://contoso.azure-api.net/api/partners/15?version=2013-05&subscription-key=abcdef
變成 http://contoso.com/api/10.4/partners/15?version=2013-05&subscription-key=abcdef
,其中 http://contoso.com/api/10.4/
是 API 設定中指定的後端服務 URL。
套用 <choose> 原則陳述式後,後端服務基底 URL 可能再次變更,根據版本要求查詢參數的值變為 http://contoso.com/api/8.2
或 http://contoso.com/api/9.1
。 例如,如果其值為 "2013-15"
,最終的要求 URL 會變成 http://contoso.com/api/8.2/partners/15?version=2013-15&subscription-key=abcdef
。
如果需要進一步轉換要求,可使用其他轉換原則。 例如,將要求路由傳送到版本特定後端之後要移除版本查詢參數,可使用設定查詢字串參數原則移除現在變得多餘的版本屬性。
將要求路由傳送至 Service Fabric 後端
在此範例中,原則會將要求傳送至 Service Fabric 後端,使用 userId 查詢字串作為資料分割索引鍵,以及使用資料分割的主要複本。
<policies>
<inbound>
<set-backend-service backend-id="my-sf-service" sf-partition-key="@(context.Request.Url.Query.GetValueOrDefault("userId","")" sf-replica-type="primary" />
</inbound>
<outbound>
<base />
</outbound>
</policies>
相關原則
相關內容
如需使用原則的詳細資訊,請參閱:
- 教學課程:轉換及保護 API
- 原則參考,取得原則陳述式及其設定的完整清單
- 原則運算式
- 設定或編輯原則
- 重複使用原則設定
- 原則程式碼片段存放庫 (英文)
- Azure API 管理 原則工具組
- 使用 Microsoft Azure Copilot 撰寫原則