1 方向の要求を送信する

適用対象: すべての API Management レベル

send-one-way-request ポリシーは、指定された URL に指定された要求を送信します。応答は待機しません。

Note

ポリシーの要素と子要素を、ポリシー ステートメントで指定された順序で設定します。 API Management ポリシーを設定または編集する方法について説明します。

ポリシー ステートメント

<send-one-way-request mode="new | copy" timeout="time in seconds">
  <set-url>request URL</set-url>
  <set-method>...</set-method>
  <set-header>...</set-header>
  <set-body>...</set-body>
  <authentication-certificate thumbprint="thumbprint" />
</send-one-way-request>

属性

属性 説明 必要 Default
mode これが new の要求であるか、現在の要求のヘッダーと本文の copy であるかを判定します。 送信ポリシー セクションでは、mode=copy は要求本文を初期化しません。 ポリシー式を使用できます。 No new
timeout URL の呼び出しが失敗するまでのタイムアウト間隔 (秒単位)。 ポリシー式を使用できます。 いいえ 60

要素

要素 説明 必須
set-url 要求の URL。 ポリシー式を使用できます。 いいえ (mode=copy の場合)。はい (それ以外の場合)。
set-method 要求のメソッドを設定します。 ポリシー式は使用できません。 いいえ (mode=copy の場合)。はい (それ以外の場合)。
set-header 要求のヘッダーを設定します。 複数の要求ヘッダーには複数の set-header 要素を使用します。 No
set-body 要求の本文を設定します。 No
authentication-certificate クライアントの認証に使用する証明書thumbprint 属性で指定されます。 いいえ
proxy HTTP プロキシ経由で要求をルーティングします。 いいえ

使用法

この例では、send-one-way-request ポリシーを使用して、HTTP 応答コードが 500 以上の場合に Slack チャット ルームにメッセージを送信します。 このサンプルの詳細については、「Azure API Management サービスからの外部サービスの使用」を参照してください。

<choose>
    <when condition="@(context.Response.StatusCode >= 500)">
      <send-one-way-request mode="new" timeout="20">
        <set-url>https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX</set-url>
        <set-method>POST</set-method>
        <set-body>@{
                return new JObject(
                        new JProperty("username","APIM Alert"),
                        new JProperty("icon_emoji", ":ghost:"),
                        new JProperty("text", String.Format("{0} {1}\nHost: {2}\n{3} {4}\n User: {5}",
                                                context.Request.Method,
                                                context.Request.Url.Path + context.Request.Url.QueryString,
                                                context.Request.Url.Host,
                                                context.Response.StatusCode,
                                                context.Response.StatusReason,
                                                context.User.Email
                                                ))
                        ).ToString();
            }</set-body>
      </send-one-way-request>
    </when>
</choose>

ポリシーに対する処理の詳細については、次のトピックを参照してください。