Envío de solicitud unidireccional

SE APLICA A: todos los niveles de API Management

La directiva send-one-way-request envía la solicitud proporcionada a la dirección URL especificada sin esperar una respuesta.

Nota:

Establezca los elementos de la directiva y los elementos secundarios en el orden proporcionado en la instrucción de directiva. Obtenga más información sobre el establecimiento o modificación de directivas de API Management.

Instrucción de la directiva

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

Atributos

Atributo Descripción Necesario Valor predeterminado
mode Determina si se trata de una solicitud new o una copy de los encabezado o cuerpo de la solicitud actual. En la sección Directiva de salida, mode=copy no inicializa el cuerpo de la solicitud. Se permiten expresiones de directiva. No new
timeout Intervalo de tiempo de espera en segundos antes de que se produzca un error de la llamada a la dirección URL. Se permiten expresiones de directiva. No 60

Elementos

Elemento Descripción Obligatorio
set-url Dirección URL de la solicitud. Se permiten expresiones de directiva. No en el caso de mode=copy; de lo contrario, sí.
set-method Establece el método de la solicitud. No se permiten expresiones de directiva. No en el caso de mode=copy; de lo contrario, sí.
set-header Establece un encabezado en la solicitud. Utilice varios elementos set-header para varios encabezados de solicitud. No
set-body Establece el cuerpo de la solicitud. No
authentication-certificate Certificado que se va a usar para la autenticación de cliente, especificado en el atributo thumbprint. No
proxy Enruta la solicitud mediante el proxy HTTP. No

Uso

Ejemplo

Este ejemplo usa la directiva send-one-way-request para enviar un mensaje a una sala de chat de Slack si el código de respuesta HTTP es mayor o igual que 500. Si desea más información sobre este ejemplo, consulte Uso de servicios externos del servicio 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>

Para más información sobre el trabajo con directivas, vea: