Créer des stratégies avancées

Effectué

Cette unité fournit une référence pour les stratégies Gestion des API suivantes :

  • Control flow : applique de manière conditionnelle les instructions des stratégies en fonction des résultats de l’évaluation des expressions booléennes.
  • Forward request : transfère la demande vers le service principal.
  • Limit concurrency : empêche les stratégies incluses d’exécuter plus de requêtes simultanées que le nombre spécifié.
  • Log to Event Hub : envoie des messages au format spécifié à un Event Hub défini par une entité Enregistreur d’événements.
  • Mock response : abandonne l’exécution du pipeline et renvoie une réponse factice indiquée directement à l’appelant.
  • Retry : effectue une nouvelle tentative d’exécution des instructions de stratégie incluses, si la condition est remplie et jusqu’à ce qu’elle le soit. L’exécution se répète selon les intervalles spécifiés et jusqu’au nombre de nouvelles tentatives spécifié.

Flux de contrôle

La stratégie choose applique des déclarations de stratégie incluses, en fonction du résultat de l’évaluation d’expressions booléennes, similaires à une logique « if-then-else » (si...alors...ou) ou à une construction de commutateur dans un langage de programmation.

<choose>
    <when condition="Boolean expression | Boolean constant">
        <!— one or more policy statements to be applied if the above condition is true  -->
    </when>
    <when condition="Boolean expression | Boolean constant">
        <!— one or more policy statements to be applied if the above condition is true  -->
    </when>
    <otherwise>
        <!— one or more policy statements to be applied if none of the above conditions are true  -->
</otherwise>
</choose>

La stratégie de flux de contrôle doit contenir au moins un élément <when/>. L’élément <otherwise/> est facultatif. Les conditions dans les éléments <when/> sont évaluées par ordre d’apparition dans la stratégie. Les déclarations de stratégie placées dans le premier élément <when/> sont appliquées quand l’attribut de condition a la valeur true (vrai). Les stratégies placées dans l’élément <otherwise/>, s’il est présent, sont appliquées si tous les attributs de condition de l’élément <when/> ont la valeur false (faux).

Transférer la requête

La stratégie forward-request transfère la demande entrante au service back-end spécifié dans le contexte de la demande. L’URL du service back-end est spécifiée dans les paramètres de l’API et peut être modifiée à l’aide de la stratégie set backend service.

La suppression de cette stratégie empêche le transfert de la requête vers le service back-end. Les stratégies de la section de sortie sont évaluées immédiatement après la réussite des stratégies dans la section d’entrée.

<forward-request timeout="time in seconds" follow-redirects="true | false"/>

Limit concurrency

La stratégie limit-concurrency empêche les stratégies incluses d’exécuter plus de demandes simultanées que le nombre spécifié. Quand les requêtes dépassent ce nombre, les nouvelles requêtes échouent immédiatement avec un code d’état 429 Trop de requêtes.

<limit-concurrency key="expression" max-count="number">
        <!— nested policy statements -->
</limit-concurrency>

Log to Event Hub

La stratégie log-to-eventhub envoie des messages au format spécifié à un Event Hub défini par une entité Enregistreur d’événements. Comme son nom l’indique, la stratégie est utilisée pour enregistrer certaines informations sur le contexte de la réponse ou de la demande à des fins d’analyse en ligne ou hors ligne.

<log-to-eventhub logger-id="id of the logger entity" partition-id="index of the partition where messages are sent" partition-key="value used for partition assignment">
  Expression returning a string to be logged
</log-to-eventhub>

Réponse factice

La mock-response, comme le nom l’indique, est utilisée pour simuler des API et des opérations. Elle interrompt l’exécution du pipeline et retourne une réponse factice à l’appelant. La stratégie essaie toujours de renvoyer des réponses de la plus haute fidélité. Elle préfère les exemples de contenu de réponse, le cas échéant. Elle génère des exemples de réponses à partir de schémas, lorsque les schémas sont fournis et les exemples ne le sont pas. Si des exemples ou des schémas ne sont pas trouvés, des réponses sans contenu sont retournées.

<mock-response status-code="code" content-type="media type"/>

Recommencer

La stratégie retry exécute ses stratégies enfants une fois, puis retente leur exécution jusqu’à ce que la condition de la nouvelle tentative devienne false ou que le count de nouvelles tentatives soit épuisé.

<retry
    condition="boolean expression or literal"
    count="number of retry attempts"
    interval="retry interval in seconds"
    max-interval="maximum retry interval in seconds"
    delta="retry interval delta in seconds"
    first-fast-retry="boolean expression or literal">
        <!-- One or more child policies. No restrictions -->
</retry>

Return response

La stratégie return-response abandonne l’exécution du pipeline et renvoie une réponse par défaut ou personnalisée à l’appelant. La réponse par défaut est 200 OK sans corps. La réponse personnalisée peut être spécifiée par le biais d’instructions de stratégie ou d’une variable de contexte. Quand les deux sont fournis, la déclaration de stratégie modifie la variable du contexte avant d’être retournée à l’appelant.

<return-response response-variable-name="existing context variable">
  <set-header/>
  <set-body/>
  <set-status/>
</return-response>

Autres ressources