Back-endservice instellen

VAN TOEPASSING OP: Alle API Management-lagen

Gebruik het set-backend-service beleid om een binnenkomende aanvraag om te leiden naar een andere back-end dan de aanvraag die is opgegeven in de API-instellingen voor die bewerking. Met dit beleid wordt de basis-URL van de back-endservice van de binnenkomende aanvraag gewijzigd in een URL of back-end die is opgegeven in het beleid.

Als u naar een back-endentiteit verwijst, kunt u de basis-URL van de back-endservice en andere instellingen op één plaats beheren en deze opnieuw gebruiken voor meerdere API's en bewerkingen. Implementeer ook taakverdeling van verkeer in een pool met back-endservices en circuitonderbrekerregels om de back-end te beschermen tegen te veel aanvragen.

Notitie

Back-endentiteiten kunnen worden beheerd via Azure Portal, beheer-API en PowerShell.

Notitie

Stel de elementen en onderliggende elementen van het beleid in de volgorde in die in de beleidsverklaring is opgegeven. Meer informatie over het instellen of bewerken van API Management-beleid.

Beleidsinstructie

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

Kenmerken

Kenmerk Beschrijving Vereist Standaardinstelling
basis-URL Nieuwe basis-URL van back-endservice. Beleidsexpressies zijn toegestaan. Een van base-url of backend-id moet aanwezig zijn. N.v.t.
back-end-id Id (naam) van de back-end om primaire of secundaire replica van een partitie te routeren. Beleidsexpressies zijn toegestaan. Een van base-url of backend-id moet aanwezig zijn. N.v.t.
sf-resolve-condition Alleen van toepassing wanneer de back-end een Service Fabric-service is. Voorwaarde die aangeeft of de aanroep van de Service Fabric-back-end moet worden herhaald met een nieuwe oplossing. Beleidsexpressies zijn toegestaan. Nee N.v.t.
sf-service-instance-name Alleen van toepassing wanneer de back-end een Service Fabric-service is. Hiermee kunt u service-exemplaren tijdens runtime wijzigen. Beleidsexpressies zijn toegestaan. Nee N.v.t.
sf-partition-key Alleen van toepassing wanneer de back-end een Service Fabric-service is. Hiermee geeft u de partitiesleutel van een Service Fabric-service. Beleidsexpressies zijn toegestaan. Nee N.v.t.
sf-listener-name Alleen van toepassing wanneer de back-end een Service Fabric-service is en wordt opgegeven met behulp van backend-id. Met Service Fabric Reliable Services kunt u meerdere listeners in een service maken. Dit kenmerk wordt gebruikt om een specifieke listener te selecteren wanneer een betrouwbare back-endservice meer dan één listener heeft. Als dit kenmerk niet is opgegeven, probeert API Management een listener zonder naam te gebruiken. Een listener zonder naam is typisch voor Reliable Services die slechts één listener hebben. Beleidsexpressies zijn toegestaan. Nee N.v.t.

Gebruik

Gebruiksnotities

Als u momenteel een basisbeleid set-backend-service definieert met behulp van het backend-id kenmerk en het basisbeleid overschrijft met behulp van <base /> het bereik, kan het alleen worden overschreven met een beleid met behulp van het backend-id kenmerk, niet het base-url kenmerk.

Voorbeelden

Routeaanvraag op basis van waarde in querytekenreeks

In dit voorbeeld set-backend-service worden aanvragen gerouteerd op basis van de versiewaarde die in de querytekenreeks is doorgegeven aan een andere back-endservice dan de service die is opgegeven in de 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>

In eerste instantie is de basis-URL van de back-endservice afgeleid van de API-instellingen. De aanvraag-URL https://contoso.azure-api.net/api/partners/15?version=2013-05&subscription-key=abcdef wordt dus waar http://contoso.com/api/10.4/partners/15?version=2013-05&subscription-key=abcdefhttp://contoso.com/api/10.4/ de URL van de back-endservice is opgegeven in de API-instellingen.

Wanneer de <beleidsinstructie kiezen> wordt toegepast, kan de basis-URL van de back-endservice opnieuw worden gewijzigd in http://contoso.com/api/8.2 of http://contoso.com/api/9.1, afhankelijk van de waarde van de queryparameter voor de versieaanvraag. Als de waarde bijvoorbeeld de uiteindelijke aanvraag-URL wordt "2013-15"http://contoso.com/api/8.2/partners/15?version=2013-15&subscription-key=abcdef.

Als verdere transformatie van de aanvraag gewenst is, kunnen andere transformatiebeleidsregels worden gebruikt. Als u bijvoorbeeld de versiequeryparameter wilt verwijderen nu de aanvraag wordt gerouteerd naar een versiespecifieke back-end, kan het parameterbeleid voor queryreeksen instellen worden gebruikt om het nu redundante versiekenmerk te verwijderen.

Aanvragen routeren naar een service fabric-back-end

In dit voorbeeld stuurt het beleid de aanvraag naar een service fabric-back-end met behulp van de querytekenreeks userId als de partitiesleutel en met behulp van de primaire replica van de partitie.

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

Zie voor meer informatie over het werken met beleid: