傳送單向要求

適用於:所有 API 管理 層

send-one-way-request 原則會將所提供的要求傳送到指定的 URL,無須等待回應。

注意

請依照原則陳述式中提供的順序,來設定原則的元素和子元素。 深入了解如何設定或編輯 APIM 原則

原則陳述式

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

屬性

屬性 描述 是必要欄位 預設
mode 判斷這是 new 要求,還是目前要求中標頭和本文的 copy。 在輸出原則區段中,mode=copy 不會將要求本文初始化。 允許使用原則運算式。 No new
timeout 以秒為單位的逾時間隔,URL 的呼叫在經過此間隔後便會失敗。 允許使用原則運算式。 No 60

元素

元素 描述 必要
set-url 要求的 URL。 允許使用原則運算式。 如果 mode=copy 即為「否」,否則為「是」。
set-method 設定要求的方法。 不允許使用原則運算式。 如果 mode=copy 即為「否」,否則為「是」。
set-header 在要求中設定標頭。 針對多個要求標頭使用多個 set-header 元素。 No
set-body 設定要求的本文。 No
authentication-certificate 用於用戶端驗證的憑證,在 thumbprint 屬性中指定。 No
Proxy 透過 HTTP Proxy 路由傳送要求。 No

使用方式

範例

如果 HTTP 回應碼大於或等於 500,此範例會使用 send-one-way-request 原則,將訊息傳送至 Slack 聊天室。 如需此範例的詳細資訊,請參閱使用來自 Azure API 管理服務的外部服務

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

如需使用原則的詳細資訊,請參閱: