設定後端服務

適用於:所有 API 管理 層

使用 set-backend-service 原則將傳入要求重新導向至不同的後端,而不是 API 設定中為該作業指定的後端。 此原則會將傳入要求的後端服務基底 URL 變更為原則中指定的 URL 或後端

參考後端實體可讓您在單一位置管理後端服務基底 URL 和其他設定,並跨多個 API 和作業重複使用它們。 同時實作跨後端服務和斷路器規則集區的流量負載平衡,以保護後端免於太多要求。

注意

後端實體可透過 Azure 入口網站、管理 APIPowerShell來管理。

注意

請依照原則陳述式中提供的順序,來設定原則的元素和子元素。 深入了解如何設定或編輯 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-urlbackend-id 其中之一必須存在。 N/A
backend-id 後端的識別碼 (名稱),可路由傳送分割區的主要或次要複本。 允許使用原則運算式。 base-urlbackend-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.2http://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>

如需使用原則的詳細資訊,請參閱: