Skapa avancerade principer

Slutförd

Den här lektionen innehåller en referens för följande API Management-principer:

  • Kontrollflöde – Tillämpar principinstruktioner villkorligt baserat på resultatet av utvärderingen av booleska uttryck.
  • Vidarebefordra begäran – Vidarebefordrar begäran till serverdelstjänsten.
  • Begränsa samtidighet – förhindrar att slutna principer körs med fler än det angivna antalet begäranden åt gången.
  • Logga till Händelsehubb – Skickar meddelanden i det angivna formatet till en händelsehubb som definierats av en Logger-entitet.
  • Simulerat svar – Avbryter pipelinekörningen och returnerar ett simulerat svar direkt till anroparen.
  • Försök igen – Kör om körningen av de omslutna principinstruktionerna, om och tills villkoret uppfylls. Körningen upprepas med de angivna tidsintervallen och upp till det angivna antalet återförsök.

Kontrollflöde

Principen choose tillämpar slutna principinstruktioner baserat på resultatet av utvärderingen av booleska uttryck, som liknar en if-then-else eller en växelkonstruktion på ett programmeringsspråk.

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

Kontrollflödesprincipen måste innehålla minst ett <when/> element. Elementet <otherwise/> är valfritt. Villkor i <when/> element utvärderas i ordning efter deras utseende i principen. Principinstruktor som omges av det första <when/> elementet med villkorsattributet är lika med true tillämpas. Principer som omges av elementet, om de <otherwise/> finns, tillämpas om alla <when/> elementvillkorsattribut är falska.

Vidarebefordra begäran

Principen forward-request vidarebefordrar den inkommande begäran till den serverdelstjänst som anges i begärandekontexten. Url:en för serverdelstjänsten anges i API-inställningarna och kan ändras med hjälp av den inställda serverdelstjänstprincipen.

Om du tar bort den här principen kommer begäran inte att vidarebefordras till serverdelstjänsten och principerna i avsnittet utgående utvärderas omedelbart när principerna i det inkommande avsnittet har slutförts.

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

Begränsa samtidighet

Principen limit-concurrency förhindrar att omslutna principer körs med fler än det angivna antalet begäranden när som helst. När antalet överskrids misslyckas nya begäranden omedelbart med statuskoden 429 För många begäranden .

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

Logga till Händelsehubb

Principen log-to-eventhub skickar meddelanden i det angivna formatet till en händelsehubb som definierats av en Logger-entitet. Som namnet antyder används principen för att spara vald information om begäran eller svarskontext för analys online eller offline.

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

Mock-svar

, mock-responsesom namnet antyder, används för att simulera API:er och åtgärder. Den avbryter normal pipelinekörning och returnerar ett simulerat svar till anroparen. Principen försöker alltid returnera svar med högsta återgivning. Den föredrar svarsinnehållsexempel när det är tillgängligt. Den genererar exempelsvar från scheman, när scheman tillhandahålls och exempel inte är det. Om inga exempel eller scheman hittas returneras svar utan innehåll.

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

Försök igen

Principen retry kör sina underordnade principer en gång och försöker sedan köra dem igen tills återförsöket condition blir false eller omförsöket count är uttömt.

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

Retursvar

Principen return-response avbryter pipelinekörningen och returnerar antingen ett standardsvar eller ett anpassat svar till anroparen. Standardsvaret är 200 OK utan brödtext. Anpassade svar kan anges via en kontextvariabel eller principinstruktioner. När båda anges ändras svaret i kontextvariabeln av principinstruktionerna innan det returneras till anroparen.

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

Ytterligare resurser