Partage via


Définition du service principal

S’APPLIQUE À : Tous les niveaux de Gestion des API

Utilisez la stratégie set-backend-service pour rediriger une demande entrante vers un service principal autre que celui qui est spécifié dans les paramètres d’API de cette opération. Cette stratégie remplace l’URL de base du service principal de la requête entrante par une URL ou le serveur principal spécifié dans la stratégie.

Le référencement d’une entité de back-end vous permet de gérer au même endroit l’URL de base du service de back-end et d’autres paramètres, et de les réutiliser dans plusieurs API et opérations. Implémentez également l’équilibrage de charge du trafic dans un pool de services de back-end et des règles de disjoncteur pour protéger le back-end contre un excès de demandes.

Remarque

Les entités de back-end peuvent être gérées par le biais du portail Azure, de l’API de gestion et de PowerShell.

Notes

Définissez les éléments enfants et de stratégie dans l’ordre fourni dans l’instruction de stratégie. En savoir plus sur comment définir ou modifier des stratégies du service Gestion des API.

Instruction de la stratégie

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

Attributs

Attribut Description Obligatoire Default
base-url Nouvelle URL de base du service principal. Les expressions de stratégie sont autorisées. base-url ou backend-id doit être présent. N/A
id de principal Identificateur (nom) du serveur principal pour acheminer le réplica principal ou secondaire d’une partition. Les expressions de stratégie sont autorisées. base-url ou backend-id doit être présent. N/A
condition de résolution SF Applicable uniquement lorsque le serveur principal est un service Service Fabric. Condition identifiant si l’appel au serveur principal Service Fabric doit être répété avec une nouvelle résolution. Les expressions de stratégie sont autorisées. Non N/A
nom d’instance de service DF Applicable uniquement lorsque le serveur principal est un service Service Fabric. Permet de modifier les instances de service lors de l’exécution. Les expressions de stratégie sont autorisées. Non N/A
clé de partition SF Applicable uniquement lorsque le serveur principal est un service Service Fabric. Spécifie la clé de partition d’un service Service Fabric. Les expressions de stratégie sont autorisées. Non N/A
sf-listener-name S’applique uniquement lorsque le back end est un service Service Fabric et qu’il est spécifié comme backend-id. Service Fabric Reliable Services permet de créer plusieurs écouteurs dans un service. Cet attribut permet de sélectionner un écouteur spécifique lorsqu’un service fiable principal dispose de plusieurs écouteurs. Si cet attribut n’est pas spécifié, Gestion des API tente d’utiliser un écouteur sans nom. Les écouteurs sans nom sont courants pour les services fiables qui n'ont qu’un seul écouteur. Les expressions de stratégie sont autorisées. Non N/A

Usage

Notes d’utilisation

Actuellement, si vous définissez une stratégie set-backend-service de base à l’aide de l’attribut backend-id et héritez de la stratégie de base en utilisant <base /> dans l’étendue, elle peut être remplacée par une stratégie uniquement à l’aide de l’attribut backend-id et non de l’attribut base-url.

Exemples

Demande de routage basée sur la valeur dans la chaîne de requête

Dans cet exemple, la stratégie set-backend-service achemine les demandes en fonction de la valeur de version transmise dans la chaîne de requête à un service principal autre que celui qui est spécifié dans l’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>

À l’origine, l’URL de base du service principal est dérivée des paramètres d’API. Par conséquent, l’URL de la demande https://contoso.azure-api.net/api/partners/15?version=2013-05&subscription-key=abcdef devient http://contoso.com/api/10.4/partners/15?version=2013-05&subscription-key=abcdef, où http://contoso.com/api/10.4/ est l’URL du service principal spécifiée dans les paramètres d’API.

Lorsque la déclaration de stratégie <choose> est appliquée, l’URL de base du service principal être de nouveau remplacée par http://contoso.com/api/8.2 ou http://contoso.com/api/9.1, selon la valeur du paramètre de requête de la demande de version. Par exemple, si la valeur est "2013-15", l’URL de demande finale devient http://contoso.com/api/8.2/partners/15?version=2013-15&subscription-key=abcdef.

Pour effectuer davantage de transformations de la demande, il est possible d’utiliser d’autres Stratégies de transformation. Par exemple, pour supprimer le paramètre de requête de la version maintenant que la demande est acheminée vers un service principal propre à la version, la stratégie Définir le paramètre de chaîne de requête peut être utilisée afin de supprimer l’attribut de version désormais redondant.

Acheminer les demandes vers un back-end Service Fabric

Dans cet exemple, la stratégie permet d’acheminer la requête vers un serveur principal Service Fabric, à l’aide de la chaîne de requêtes userid en tant que clé de partition et à l’aide du réplica primaire de la partition.

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

Pour plus d’informations sur l’utilisation des stratégies, consultez :