Ange serverdelstjänst

GÄLLER FÖR: Alla API Management-nivåer

Använd principen set-backend-service för att omdirigera en inkommande begäran till en annan serverdel än den som anges i API-inställningarna för den åtgärden. Den här principen ändrar serverdelstjänstens bas-URL för den inkommande begäran till en URL eller serverdel som anges i principen.

Om du refererar till en serverdelsentitet kan du hantera serverdelstjänstens bas-URL och andra inställningar på en enda plats och återanvända dem i flera API:er och åtgärder. Implementera även belastningsutjämning av trafik över en pool med serverdelstjänster och regler för kretsbrytare för att skydda serverdelen från för många begäranden.

Kommentar

Serverdelsentiteter kan hanteras via Azure-portalen, hanterings-API och PowerShell.

Kommentar

Ange principens element och underordnade element i den ordning som anges i principbeskrivningen. Läs mer om hur du anger eller redigerar API Management-principer.

Principuttryck

<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" />

Attribut

Attribut beskrivning Obligatoriskt Standardvärde
base-url Ny serverdelstjänstbas-URL. Principuttryck tillåts. En av base-url eller backend-id måste finnas. Ej tillämpligt
backend-id Identifierare (namn) för serverdelen för att dirigera en primär eller sekundär replik av en partition. Principuttryck tillåts. En av base-url eller backend-id måste finnas. Ej tillämpligt
sf-resolve-condition Gäller endast när serverdelen är en Service Fabric-tjänst. Villkor som identifierar om anropet till Service Fabric-serverdelen måste upprepas med ny lösning. Principuttryck tillåts. Nej Ej tillämpligt
sf-service-instance-name Gäller endast när serverdelen är en Service Fabric-tjänst. Tillåter ändring av tjänstinstanser vid körning. Principuttryck tillåts. Nej Ej tillämpligt
sf-partition-key Gäller endast när serverdelen är en Service Fabric-tjänst. Anger partitionsnyckeln för en Service Fabric-tjänst. Principuttryck tillåts. Nej Ej tillämpligt
sf-listener-name Gäller endast när serverdelen är en Service Fabric-tjänst och anges med hjälp av backend-id. Med Service Fabric Reliable Services kan du skapa flera lyssnare i en tjänst. Det här attributet används för att välja en specifik lyssnare när en tillförlitlig serverdelstjänst har mer än en lyssnare. Om det här attributet inte har angetts försöker API Management använda en lyssnare utan namn. En lyssnare utan namn är typisk för Reliable Services som bara har en lyssnare. Principuttryck tillåts. Nej Ej tillämpligt

Användning

Användningsanteckningar

Om du för närvarande definierar en basprincip set-backend-service med hjälp av backend-id attributet och ärver basprincipen med hjälp av <base /> inom omfånget, kan den bara åsidosättas med en princip med hjälp av backend-id attributet, inte base-url attributet.

Exempel

Routningsbegäran baserat på värdet i frågesträngen

I det här exemplet set-backend-service dirigerar principen begäranden baserat på versionsvärdet som skickas i frågesträngen till en annan serverdelstjänst än den som anges i API:et.

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

Ursprungligen härleds serverdelstjänstens bas-URL från API-inställningarna. Så begärande-URL:en https://contoso.azure-api.net/api/partners/15?version=2013-05&subscription-key=abcdef blir http://contoso.com/api/10.4/partners/15?version=2013-05&subscription-key=abcdef där http://contoso.com/api/10.4/ är serverdelstjänstens URL som anges i API-inställningarna.

När principuttryck för <välj> tillämpas kan serverdelstjänstens bas-URL ändras igen till http://contoso.com/api/8.2 eller http://contoso.com/api/9.1, beroende på värdet för frågeparametern för versionsbegäran. Om värdet till exempel är "2013-15" den slutliga begärande-URL:en blir http://contoso.com/api/8.2/partners/15?version=2013-15&subscription-key=abcdef.

Om ytterligare transformering av begäran önskas kan andra transformeringsprinciper användas. Om du till exempel vill ta bort frågeparametern version nu när begäran dirigeras till en versionsspecifik serverdel kan du använda parameterprincipen Ange frågesträng för att ta bort det nu redundanta versionsattributet.

Dirigera begäranden till en service fabric-serverdel

I det här exemplet dirigerar principen begäran till en service fabric-serverdel med hjälp av userId-frågesträngen som partitionsnyckel och använder partitionens primära replik.

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

Mer information om hur du arbetar med principer finns i: