Back-End-Dienst festlegen

GILT FÜR: Alle API Management-Ebenen

Verwenden Sie die Richtlinie set-backend-service, um eine eingehende Anforderung an einen anderen Back-End umzuleiten, als in den API-Einstellungen für diesen Vorgang angegeben ist. Diese Richtlinie ändert die Basis-URL des Back-End-Diensts der eingehenden Anforderung in eine URL oder ein Back-End, die bzw. das in der Richtlinie angegeben ist.

Durch das Verweisen auf eine Back-End-Entität können Sie die Basis-URL des Back-End-Diensts und andere Einstellungen an einem zentralen Ort verwalten und sie für mehrere APIs und Vorgänge wiederverwenden. Implementieren Sie außerdem einen Lastenausgleich für den Datenverkehr über einen Pool von Back-End-Diensten hinweg und Circuit Breaker-Regeln (Trennschalter), um das Back-End vor zu vielen Anforderungen zu schützen.

Hinweis

Back-End-Entitäten können über das Azure-Portal, die Verwaltungs-API und PowerShell verwaltet werden.

Hinweis

Legen Sie die Elemente und untergeordneten Elemente einer Richtlinie in der Reihenfolge fest, die in der Richtlinienanweisung angegeben ist. Erfahren Sie mehr darüber, wie Sie API Management-Richtlinien festlegen oder bearbeiten.

Richtlinienanweisung

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

Attribute

Attribut BESCHREIBUNG Erforderlich Standard
base-url Neue Basis-URL für den Back-End-Dienst. Richtlinienausdrücke sind zulässig. Entweder base-url oder backend-id muss vorhanden sein.
backend-id Bezeichner (Name) des Back-Ends zum Weiterleiten des primären oder sekundären Replikats einer Partition. Richtlinienausdrücke sind zulässig. Entweder base-url oder backend-id muss vorhanden sein.
sf-resolve-condition Nur gültig, wenn es sich bei dem Back-End um einen Service Fabric-Dienst handelt. Bedingung, die angibt, ob der Aufruf des Service Fabric-Back-Ends mit einer neuen Auflösung wiederholt werden muss. Richtlinienausdrücke sind zulässig. Nein
sf-service-instance-name Nur gültig, wenn es sich bei dem Back-End um einen Service Fabric-Dienst handelt. Ermöglicht das Ändern von Dienstinstanzen zur Laufzeit. Richtlinienausdrücke sind zulässig. Nein
sf-partition-key Nur gültig, wenn es sich bei dem Back-End um einen Service Fabric-Dienst handelt. Gibt den Partitionsschlüssel eines Service Fabric-Diensts an. Richtlinienausdrücke sind zulässig. Nein
sf-listener-name Nur gültig, wenn es sich bei dem Back-End um einen Service Fabric-Dienst handelt, der über backend-id angegeben wurde. Service Fabric Reliable Services ermöglichen die Erstellung mehrerer Listener in einem Dienst. Mit diesem Attribut wird ein bestimmter Listener ausgewählt, wenn eine Reliable Services-Instanz eines Back-Ends über mehrere Listener verfügt. Wenn dieses Attribut nicht angegeben wird, versucht API Management, einen Listener ohne Namen zu verwenden. Ein Listener ohne Name ist typisch für Reliable Services mit nur einem Listener. Richtlinienausdrücke sind zulässig. Nein

Verwendung

Hinweise zur Verwendung

Wenn Sie derzeit eine set-backend-service-Basisrichtlinie mit dem backend-id-Attribut definieren und die Basisrichtlinie mit <base /> innerhalb des Bereichs erben, kann sie nur durch eine Richtlinie mit dem backend-id-Attribut und nicht mit dem base-url-Attribut überschrieben werden.

Beispiele

Routenanforderung basierend auf dem Wert in der Abfragezeichenfolge

In diesem Beispiel leitet die set-backend-service-Richtlinie Anforderungen auf Grundlage des in der Abfragezeichenfolge übergebenen Versionswerts an einen anderen Back-End-Dienst um, als in der API angegeben ist.

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

Zunächst wird die Basis-URL für den Back-End-Dienst aus den API-Einstellungen abgeleitet. Daher wird die Anforderungs-URL https://contoso.azure-api.net/api/partners/15?version=2013-05&subscription-key=abcdef zu http://contoso.com/api/10.4/partners/15?version=2013-05&subscription-key=abcdef. Dabei ist http://contoso.com/api/10.4/ die Back-End-Dienst-URL, die in den API-Einstellungen angegeben ist.

Wenn die Richtlinienanweisung <choose> angewendet wird, kann sich die Basis-URL für den Back-End-Dienst möglicherweise erneut in http://contoso.com/api/8.2 oder http://contoso.com/api/9.1 ändern, abhängig vom Wert des Abfrageparameters für die Version in der Anforderung. Wenn der Wert beispielsweise "2013-15" ist, ist die endgültige Anforderungs-URL http://contoso.com/api/8.2/partners/15?version=2013-15&subscription-key=abcdef.

Wenn weitere Transformationen der Anforderung gewünscht sind, können andere Transformationsrichtlinien verwendet werden. Um beispielsweise den Abfrageparameter für die Version zu entfernen, da die Anforderung jetzt an einen versionsspezifischen Back-End weitergeleitet wird, kann die Richtlinie Abfrageparameter setzen verwendet werden, um das jetzt redundante Versionsattribut zu entfernen.

Weiterleiten von Anforderungen an ein Service Fabric-Back-End

In diesem Beispiel leitet die Richtlinie die Anforderung an das Service Fabric-Back-End weiter, wobei die Abfragezeichenfolge userId als Partitionsschlüssel sowie das primäre Replikat der Partition verwendet werden.

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

Weitere Informationen zum Arbeiten mit Richtlinien finden Sie hier: