詳細なポリシーを作成する
このユニットでは、次の 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/>
要素内の条件は、ポリシーに記述されている順序で評価されます。 最初の <when/>
要素で囲まれたポリシー ステートメントは、その condition 属性が true の場合に適用されます。 <otherwise/>
要素で囲まれたポリシーは、<when/>
要素の condition 属性のすべてが false である場合に適用されます (存在する場合)。
要求の転送
forward-request
ポリシーによって、要求コンテキストで指定されたバックエンド サービスに受信要求が転送されます。 バックエンド サービスの URL は API 設定で指定され、バックエンド サービスの設定ポリシーを使用して変更できます。
このポリシーを削除すると、要求がバックエンド サービスに転送されなくなります。 送信セクションのポリシーは、受信セクションのポリシーが正常に完了した時点で即座に評価されます。
<forward-request timeout="time in seconds" follow-redirects="true | false"/>
コンカレンシーを制限する
limit-concurrency
ポリシーは、含まれているポリシーがいずれかの時点で指定された数を超える要求によって実行されないようにします。 要求数がその数を超えた場合、新しい要求は 429 Too Many Requests 状態コードで直ちに失敗します。
<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 回実行し、再試行 condition
が false
になるか再試行 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>
その他のリソース
- その他のポリシーの例については、API Management のポリシーに関するページを参照してください。
- API Management のポリシーにおけるエラー処理