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 à intervalles réguliers et ce jusqu’au nombre de tentatives défini.

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 incluses dans le premier élément <when/> avec un attribut de condition qui est égal à true sont appliquées. Les stratégies incluses dans l’élément <otherwise/>, le cas échéant, sont appliquées si tous les attributs de condition de l’élément <when/> ont la valeur false.

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.

En cas de suppression cette stratégie, la demande n’est pas transférée au service principal et les stratégies de la section outbound sont évaluées immédiatement après la réussite des stratégies de la section inbound.

<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é. En cas de dépassement de ce nombre, les nouvelles demandes échouent immédiatement avec un code d’état 429 Trop de demandes.

<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 aucun exemple ou schéma n’est trouvé, 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. Lorsque les deux sont fournies, la réponse contenue dans la variable de contexte est modifiée par les instructions de stratégie avant d’être renvoyée à l’appelant.

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

Ressources supplémentaires