适用于:所有 API 管理层级
              send-one-way-request 策略将提供的请求发送到指定的 URL,无需等待响应。
注意
按照策略声明中提供的顺序设置策略的元素和子元素。 详细了解如何设置或编辑 API 管理策略。
策略语句
<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>
属性
| 属性 | 说明 | 需要 | 默认 | 
|---|---|---|---|
| 模式 | 确定这是是 new请求还是当前请求中标头和正文的copy。 在出站策略部分中,mode=copy不会初始化请求正文。 允许使用策略表达式。 | 否 | new | 
| 超时 | 以秒为单位的超时间隔,此时间过后对 URL 的调用会失败。 允许使用策略表达式。 | 否 | 六十 | 
元素
| 元素 | 说明 | 需要 | 
|---|---|---|
| 设置网址 | 请求的 URL。 允许使用策略表达式。 | 如果为 mode=copy,则为否;否则为是。 | 
| 设置方法 | 设置请求的方法。 不允许使用策略表达式。 | 如果为 mode=copy,则为否;否则为是。 | 
| 设置标题 | 设置请求中的标头。 将多个 set-header元素用于多个请求标头。 | 否 | 
| set-body | 设置请求的正文。 | 否 | 
| 认证证书 | 用于客户端身份验证的证书,在 thumbprint属性中指定。 | 否 | 
| 代理 | 通过 HTTP 代理路由请求。 | 否 | 
使用情况
使用注意事项
- 自承载网关不支持在出站部分中使用多个 send-one-way-request策略。
示例
如果 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>
相关策略
后续步骤
有关使用策略的详细信息,请参阅:
- 教程:转换和保护 API
- 策略参考,其中提供了策略语句及其设置的完整列表
- 策略表达式
- 设置或编辑策略
- 策略示例