詳細なポリシーを作成する

完了

このユニットでは、次の API Management ポリシーの参照を示します。

  • 制御フロー - ブール式の評価の結果に基づいてポリシー ステートメントを条件付きで適用します。
  • 要求を転送する - バックエンド サービスに要求を転送します。
  • コンカレンシーを制限する - 含まれているポリシーが指定された数を超える要求によって同時に実行されないようにします。
  • イベント ハブにログを記録する - 指定された形式のメッセージを Logger エンティティによって定義されたイベント ハブに送信します。
  • Mock response (モック応答) - パイプラインの実行を中止し、モック応答を呼び出し元に直接返します。
  • 再試行 - 条件が満たされるまで、囲まれたポリシー ステートメントの実行を再試行します。 実行は、指定された間隔で、指定された最大試行回数まで繰り返されます。

制御フロー

choose ポリシーでは、プログラミング言語の if-then-else や switch コンストラクトと同様、ブール式の評価結果に基づいて、囲まれたポリシー ステートメントを適用します。

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

制御フロー ポリシーには、1 つ以上の <when/> 要素が含まれている必要があります。 <otherwise/> 要素は省略可能です。 <when/> 要素内の条件は、ポリシーに記述されている順序で評価されます。 condition 属性が true の最初の <when/> 要素内で囲まれたポリシー ステートメントが適用されます。 <when/> 要素条件のすべての属性が false の場合、<otherwise/> 要素内で囲まれたポリシーが適用されます (存在する場合)。

要求の転送

forward-request ポリシーによって、要求コンテキストで指定されたバックエンド サービスに受信要求が転送されます。 バックエンド サービスの URL は API 設定で指定され、バックエンド サービスの設定ポリシーを使用して変更できます。

このポリシーを削除すると、要求はバックエンド サービスに転送されず、inbound セクションのポリシーが正常に完了した時点で outbound セクションのポリシーが即座に評価されます。

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

コンカレンシーを制限する

limit-concurrency ポリシーは、含まれているポリシーがいずれかの時点で指定された数を超える要求によって実行されないようにします。 その数を超えた場合、新しい要求は "429 要求が多すぎます" 状態コードですぐに失敗します。

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

イベント ハブにログを記録する

log-to-eventhub ポリシーは、指定された形式のメッセージを Logger エンティティによって定義されたイベント ハブに送信します。 その名前が示すように、このポリシーは、オンラインまたはオフライン分析のために、選択された要求または応答コンテキスト情報を保存するために使用します。

<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-response は名前が示すとおり、API と操作の模擬テストを実行するために使用します。 通常のパイプライン実行を中止し、モック応答を呼び出し元に返します。 ポリシーは常に、再現性が最も高い応答を返そうとします。 使用可能な場合は常に、応答コンテキストの例が優先されます。 スキーマが提供され、例が提供されていない場合、ポリシーはスキーマからサンプルの応答を生成します。 例もスキーマも見つからない場合、コンテキストなしの応答が返されます。

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

[再試行]

retry ポリシーは子ポリシーを 1 回実行し、再試行 conditionfalse になるか再試行 count に達するまで、実行を再試行します。

<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 ポリシーは、パイプラインの実行を中止し、既定またはカスタムの応答を呼び出し元に返します。 既定の応答は、本文のない 200 OK です。 コンテキスト変数またはポリシー ステートメントを使用して、カスタムの応答を指定できます。 その両方を指定した場合、コンテキスト変数に含まれる応答が、呼び出し元に返される前にポリシー ステートメントによって変更されます。

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

その他の技術情報