Compartir vía


Activación de un enlace de salida

SE APLICA A: Desarrollador | Premium

La directiva invoke-dapr-binding indica a la puerta de enlace de API Management que desencadene un enlace de salida de Dapr. Para ello, la directiva realiza una solicitud HTTP POST a http://localhost:3500/v1.0/bindings/{{bind-name}}, reemplazando los parámetros de la plantilla y agregando el contenido especificado en la instrucción de directiva.

La directiva presupone que el entorno de ejecución de Dapr se está ejecutando en un contenedor sidecar situado en el mismo pod que la puerta de enlace. El entorno de ejecución de Dapr se encarga de invocar el recurso externo representado por el enlace. Obtenga más información sobre la integración de Dapr con API Management.

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

<invoke-dapr-binding name="bind-name" operation="op-name" ignore-error="false | true" response-variable-name="resp-var-name" timeout="in seconds" template="Liquid" content-type="application/json">
    <metadata>
        <item key="item-name"><!-- item-value --></item>
    </metadata>
    <data>
        <!-- message content -->
    </data>
</invoke-dapr-binding>

Atributos

Atributo Descripción Necesario Valor predeterminado
name Nombre del enlace de destino. Debe coincidir con el nombre de los enlaces definidos en Dapr. Se permiten expresiones de directiva. N/D
operation Nombre de la operación de destino (específica del enlace). Se asigna a la propiedad operation de Dapr. No se permiten expresiones de directiva. No None
ignore-error Si se establece en true, indica a la directiva que no desencadene la sección "on-error" tras recibir un error del entorno de ejecución de Dapr. No se permiten expresiones de directiva. No false
response-variable-name Nombre de la entrada de la colección Variables que se va a usar para almacenar la respuesta del entorno de ejecución de Dapr. No se permiten expresiones de directiva. No None
timeout Tiempo (en segundos) que se debe esperar a que responda el entorno de ejecución de Dapr. Puede oscilar entre 1 y 240 segundos. Se permiten expresiones de directiva. No 5
template Motor de creación de plantillas que se usa para transformar el contenido del mensaje. "Liquid" es el único valor admitido. No None
content-type Tipo de contenido del mensaje. "application/json" es el único valor admitido. No None

Elementos

Elemento Descripción Requerido
metadata Metadatos específicos del enlace en forma de pares clave-valor. Se asigna a la propiedad metadata de Dapr. No
datos Contenido del mensaje. Se asigna a la propiedad data de Dapr. Se permiten expresiones de directiva. No

Uso

Notas de uso

La compatibilidad con Dapr debe estar habilitada en la puerta de enlace autohospedada.

Ejemplo

En el ejemplo siguiente, se muestra cómo se desencadena un enlace de salida llamado "external-systems" con el nombre de operación "create", unos metadatos que constan de dos elementos clave-valor llamados "source" y "client-ip", y el cuerpo procedente de la solicitud original. La respuesta que se recibe del entorno de ejecución de Dapr se guarda en la entrada "bind-response" de la colección Variables del objeto context.

Si por algún motivo se produce un error en el entorno de ejecución de Dapr y se responde con un error, se desencadena la sección "on-error" y la respuesta que se recibe del entorno de ejecución de Dapr se devuelve literalmente al autor de la llamada. De lo contrario, se devuelve la respuesta predeterminada: 200 OK.

La sección "backend" está vacía y la solicitud no se reenvía al back-end.

<policies>
     <inbound>
        <base />
        <invoke-dapr-binding
                      name="external-system"
                      operation="create"
                      response-variable-name="bind-response">
            <metadata>
                <item key="source">api-management</item>
                <item key="client-ip">@(context.Request.IpAddress )</item>
            </metadata>
            <data>
                @(context.Request.Body.As<string>() )
            </data>
        </invoke-dapr-binding>
    </inbound>
    <backend>
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
        <return-response response-variable-name="bind-response" />
    </on-error>
</policies>

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