Recepción y respuesta a llamadas HTTPS entrantes a flujos de trabajo en Azure Logic Apps
Article
Se aplica a: Azure Logic Apps (consumo + estándar)
En esta guía paso a paso se muestra cómo crear un flujo de trabajo de aplicación lógica que pueda recibir y controlar una solicitud HTTPS entrante o una llamada desde otro servicio mediante el desencadenador integrado Solicitud. Cuando el flujo de trabajo usa este desencadenador, puede responder a la solicitud HTTPS mediante la acción integrada Respuesta.
Nota
La acción Respuesta solo funciona cuando se usa el desencadenador de Solicitud.
En la lista siguiente se describen algunas tareas de ejemplo que el flujo de trabajo puede realizar al usar el desencadenador de Solicitud y la acción de Respuesta:
Reciba una solicitud HTTP de datos en una base de datos local, y responda a ella.
Reciba y responda a una solicitud HTTPS enviada desde otro flujo de trabajo de aplicación lógica.
Desencadene una ejecución de flujo de trabajo cuando se produzca un evento de webhook externo.
Flujo de trabajo de la aplicación lógica donde quiere recibir la solicitud HTTPS entrante. Para iniciar el flujo de trabajo mediante un desencadenador de Solicitud, deberá empezar con un flujo de trabajo en blanco. Para usar la acción Respuesta, el flujo de trabajo debe comenzar con el desencadenador de Solicitud.
Instale o use una herramienta que pueda enviar solicitudes HTTP para probar la solución, por ejemplo:
En escenarios en los que tiene datos confidenciales, como credenciales, secretos, tokens de acceso, claves de API y otra información similar, asegúrese de usar una herramienta que proteja los datos con las características de seguridad necesarias, funcione sin conexión o localmente, no sincronice los datos en la nube y no requiera que inicie sesión en una cuenta en línea. De este modo, se reduce el riesgo de exponer datos confidenciales al público.
Adición de un desencadenador de solicitud
Este desencadenador de Solicitud crea un punto de conexión al que se puede llamar manualmente que controla solo solicitudes entrantes a través de HTTPS. Cuando el autor de la llamada envía una solicitud a este punto de conexión, el desencadenador de Solicitud se activa y ejecuta el flujo de trabajo. Para obtener más información sobre cómo llamar a este desencadenador, consulte Llamada, desencadenamiento o anidamiento de flujos de trabajos con puntos de conexión HTTPS en Azure Logic Apps.
Una vez que aparezca el cuadro de información del desencadenador, proporcione la siguiente información según sea necesario:
Nombre de propiedad
Nombre de la propiedad JSON
Obligatorio
Descripción
URL de HTTP POST
{none}
Sí
La URL del punto de conexión que se genera después de guardar el flujo de trabajo y se usa para enviar una solicitud que desencadene el flujo de trabajo.
Esquema JSON del cuerpo de la solicitud
schema
No
El esquema JSON que describe las propiedades y los valores del cuerpo de la solicitud entrante. El diseñador usa este esquema para generar tokens para las propiedades de la solicitud. De esa manera, el flujo de trabajo puede analizar, consumir y pasar los resultados del desencadenador de Solicitud al flujo de trabajo.
Si no tiene un esquema JSON, puede generarlo a partir de una carga útil de muestra mediante la capacidad Usar carga útil de muestra para generar esquemas.
A continuación se muestra un ejemplo de esquema JSON:
A continuación se muestra un ejemplo de esquema JSON completo:
Cuando introduce un esquema JSON, el diseñador muestra un recordatorio para incluir el encabezado Content-Type en la solicitud y establecer el valor del encabezado en aplicación/JSON. Para obtener más información, consulte Control de tipos de contenido.
En el siguiente ejemplo se muestra cómo aparece el encabezado Content-Type en formato JSON:
JSON
{
"Content-Type": "application/json"
}
Para generar un esquema JSON basado en la carga esperada (datos), puede usar una herramienta como JSONSchema.net o puede seguir estos pasos:
En el desencadenador Solicitud, seleccione Usar una carga de ejemplo para generar el esquema.
Escriba la carga de ejemplo y seleccione Listo.
En el ejemplo siguiente se muestra la carga de ejemplo:
Para comprobar que la llamada entrante tiene un cuerpo de solicitud que coincide con el esquema especificado, siga estos pasos:
Para exigir que el mensaje entrante tenga exactamente los mismos campos que el esquema describe, en el esquema, agregue la propiedad required y especifique los campos obligatorios. Agregue la propiedad additionalProperties y establezca el valor en false.
Por ejemplo, el esquema siguiente especifica que el mensaje entrante debe tener el campo msg y ningún otro:
En la barra de título del desencadenador de Solicitud, seleccione el botón de puntos suspensivos (...).
En la configuración del desencadenador, active Validación de esquema y seleccione Listo.
Si el cuerpo de la solicitud de la llamada entrante no coincide con el esquema, el desencadenador devuelve un error HTTP 400 Solicitud no válida.
Para agregar otras propiedades o parámetros al desencadenador, abra la lista Agregar nuevo parámetro y seleccione los parámetros que quiera agregar.
Nombre de propiedad
Nombre de la propiedad JSON
Obligatorio
Descripción
Método
method
No
Método que la solicitud entrante debe usar para llamar a la aplicación lógica
Ruta de acceso relativa
relativePath
No
Ruta de acceso relativa del parámetro que la URL del punto de conexión de la aplicación lógica puede aceptar
En el siguiente ejemplo se agrega la propiedad Método:
La propiedad Method aparece en el desencadenador para que pueda seleccionar un método de la lista.
Cuando haya terminado, guarde el flujo de trabajo. En la barra de herramientas del diseñador, seleccione Save (Guardar).
Este paso genera la URL que puede usar para enviar una solicitud que desencadene el flujo de trabajo.
Para copiar la URL generada, seleccione el icono de copia que se encuentra junto a la URL.
Nota
Si quiere incluir el símbolo de hash o de almohadilla (#) en el URI al hacer una llamada al desencadenador de Solicitud, use mejor esta versión codificada: %25%23
En Azure Portal, abra su recurso de aplicación lógica Estándar y el flujo de trabajo en blanco en el diseñador.
Una vez que aparezca el cuadro de información del desencadenador, proporcione la siguiente información según sea necesario:
Nombre de propiedad
Nombre de la propiedad JSON
Obligatorio
Descripción
URL de HTTP POST
{none}
Sí
La URL del punto de conexión que se genera después de guardar el flujo de trabajo y se usa para enviar una solicitud que desencadene el flujo de trabajo.
Esquema JSON del cuerpo de la solicitud
schema
No
El esquema JSON que describe las propiedades y los valores del cuerpo de la solicitud entrante. El diseñador usa este esquema para generar tokens para las propiedades de la solicitud. De esa manera, el flujo de trabajo puede analizar, consumir y pasar los resultados del desencadenador de Solicitud al flujo de trabajo.
Si no tiene un esquema JSON, puede generarlo a partir de una carga útil de muestra mediante la capacidad Usar carga útil de muestra para generar esquemas.
A continuación se muestra un ejemplo de esquema JSON:
A continuación se muestra un ejemplo de esquema JSON completo:
Cuando introduce un esquema JSON, el diseñador muestra un recordatorio para incluir el encabezado Content-Type en la solicitud y establecer el valor del encabezado en aplicación/JSON. Para obtener más información, consulte Control de tipos de contenido.
En el siguiente ejemplo se muestra cómo aparece el encabezado Content-Type en formato JSON:
JSON
{
"Content-Type": "application/json"
}
Para generar un esquema JSON basado en la carga esperada (datos), puede usar una herramienta como JSONSchema.net o puede seguir estos pasos:
En el desencadenador Solicitud, seleccione Usar una carga de ejemplo para generar el esquema.
Escriba la carga de ejemplo y seleccione Listo.
En el ejemplo siguiente se muestra la carga de ejemplo:
Para comprobar que la llamada entrante tiene un cuerpo de solicitud que coincide con el esquema especificado, siga estos pasos:
Para exigir que el mensaje entrante tenga exactamente los mismos campos que el esquema describe, en el esquema, agregue la propiedad required y especifique los campos obligatorios. Agregue la propiedad additionalProperties y establezca el valor en false.
Por ejemplo, el esquema siguiente especifica que el mensaje entrante debe tener el campo msg y ningún otro:
En el diseñador, seleccione el desencadenador de Solicitud. En el panel de información que se abre, seleccione la pestaña Configuración.
Expanda Control de datos, y establezca Validación de esquema en Activado.
Si el cuerpo de la solicitud de la llamada entrante no coincide con el esquema, el desencadenador devuelve un error HTTP 400 Solicitud no válida.
Para agregar otras propiedades o parámetros al desencadenador, seleccione la pestaña Parámetros, abra la listaAgregar nuevo parámetro y seleccione los parámetros que quiera agregar.
Nombre de propiedad
Nombre de la propiedad JSON
Obligatorio
Descripción
Método
method
No
Método que la solicitud entrante debe usar para llamar a la aplicación lógica
Ruta de acceso relativa
relativePath
No
Ruta de acceso relativa del parámetro que la URL del punto de conexión de la aplicación lógica puede aceptar
En el siguiente ejemplo se agrega la propiedad Método:
La propiedad Method aparece en el desencadenador para que pueda seleccionar un método de la lista.
Cuando haya terminado, guarde el flujo de trabajo. En la barra de herramientas del diseñador, seleccione Save (Guardar).
Este paso genera la URL que puede usar para enviar una solicitud que desencadene el flujo de trabajo.
Para copiar la URL generada, seleccione el icono de copia que se encuentra junto a la URL.
Nota
Si quiere incluir el símbolo de hash o de almohadilla (#) en el URI al hacer una llamada al desencadenador de Solicitud, use mejor esta versión codificada: %25%23
La dirección URL del desencadenador de Solicitud está asociada a la cuenta de almacenamiento del flujo de trabajo. Esta dirección URL cambia si cambia la cuenta de almacenamiento. Por ejemplo, con Aplicaciones lógicas estándar, si cambia manualmente la cuenta de almacenamiento y copia el flujo de trabajo en la nueva cuenta de almacenamiento, la dirección URL del desencadenador de Solicitud también cambia para reflejar la nueva cuenta de almacenamiento. El mismo flujo de trabajo tiene una dirección URL diferente.
Validación de esquemas para flujos de trabajo sin estado
Para habilitar la validación de esquemas para flujos de trabajo sin estado, asegúrese de que el archivo host.json en el recurso de aplicación lógica o el proyecto tiene la siguiente configuración de host:
Ahora, puede seguir compilando el flujo de trabajo mediante la agregación de otra acción como siguiente paso. Por ejemplo, puede responder a la solicitud mediante la agregación de una acción de respuesta, que puede usar para devolver una respuesta personalizada y que se describe más adelante en este tema.
Nota
El flujo de trabajo solo mantiene abierta una solicitud entrante durante un tiempo limitado.
En el supuesto de que el flujo de trabajo también incluya una acción de respuesta, si el flujo de trabajo no devuelve una respuesta al autor de la llamada después de que expire este tiempo, el flujo de trabajo devolverá el estado 504 TIEMPO DE ESPERA DE LA PUERTA DE ENLACE al autor de la llamada. Si el flujo de trabajo no incluye una acción de respuesta, este devolverá inmediatamente el estado 202 ACEPTADO al autor de la llamada.
En la siguiente tabla se enumeran las salidas del desencadenador de Solicitud:
Nombre de la propiedad JSON
Tipo de datos
Descripción
headers
Object
Objeto JSON que describe los encabezados de la solicitud
cuerpo
Object
Objeto JSON que describe el contenido del cuerpo de la solicitud
Adición de una acción de respuesta
Cuando use el desencadenador de Solicitud para recibir solicitudes entrantes, puede modelar la respuesta y enviar los resultados de la carga al autor de la llamada mediante la acción de respuesta integrada, que solo funciona con el desencadenador de Solicitud. Esta combinación con el desencadenador de Solicitud y la acción de respuesta crea el patrón de solicitud-respuesta. Excepto dentro de los bucles Foreach, los bucles Until y las ramas paralelas, se puede agregar una acción de respuesta en cualquier lugar del flujo de trabajo.
Important
Si la acción de respuesta incluye los siguientes encabezados, Azure Logic Apps quitará dichos encabezados del mensaje de respuesta generado sin mostrar ninguna advertencia o error. Azure Logic Apps no incluirá estos encabezados, aunque el servicio no le impedirá guardar flujos de trabajo que tengan una acción de respuesta con estos encabezados.
Allow
Encabezados Content-*, excepto Content-Disposition, Content-Encoding y Content-Typecuando se usan operaciones POST y PUT, pero no se incluyen en operaciones GET
Cookie
Expires
Last-Modified
Set-Cookie
Transfer-Encoding
Si tiene una o varias acciones de respuesta en un flujo de trabajo complejo con ramas, asegúrese de que el flujo de trabajo procese al menos una acción de respuesta durante el tiempo de ejecución. De lo contrario, si se omiten todas las acciones de respuesta, el autor de la llamada recibe un error 502: Puerta de enlace incorrecta, incluso si el flujo de trabajo finaliza correctamente.
En un flujo de trabajo sin estado de aplicación lógica estándar, la acción Respuesta debe aparecer en último lugar en el flujo de trabajo. Si la acción aparece en cualquier otro lugar, Azure Logic Apps todavía no ejecutará la acción hasta que todas las demás acciones terminen de ejecutarse.
Para simplificar, los ejemplos siguientes muestran un desencadenador de Solicitud contraído.
En el cuadro de información de la acción, agregue los valores necesarios para el mensaje de respuesta
Nombre de propiedad
Nombre de la propiedad JSON
Obligatorio
Descripción
Código de estado
statusCode
Sí
Código de estado que se devolverá en la respuesta
Encabezados
headers
No
Objeto JSON que describe uno o más encabezados que se incluirán en la respuesta
Cuerpo
body
No
Cuerpo de la respuesta
Al seleccionar dentro de cualquier campo de texto, se abre automáticamente la lista de contenido dinámico. A continuación, puede seleccionar tokens que representen cualquier salida disponible de pasos anteriores del flujo de trabajo. Las propiedades del esquema que especifique también aparecen en esta lista de contenido dinámico. Puede seleccionar estas propiedades para usarlas en el flujo de trabajo.
Por ejemplo, para el cuadro Encabezados, incluya Content-Type como nombre de clave y establezca el valor de clave en aplicación/JSON, tal y como se mencionó anteriormente en este artículo. Para el cuadro Cuerpo, puede seleccionar la salida del cuerpo del desencadenador en la lista de contenido dinámico.
Para ver los encabezados en formato JSON, seleccione Switch to text view (Cambiar a la vista de texto).
Para agregar más propiedades para la acción, como un esquema JSON para el cuerpo de respuesta, abra la lista Agregar nuevo parámetro y seleccione los parámetros que quiera agregar.
Cuando haya terminado, guarde el flujo de trabajo. En la barra de herramientas del diseñador, seleccione Save (Guardar).
En el cuadro de información de la acción, agregue los valores necesarios para el mensaje de respuesta:
Nombre de propiedad
Nombre de la propiedad JSON
Obligatorio
Descripción
Código de estado
statusCode
Sí
Código de estado que se devolverá en la respuesta
Encabezados
headers
No
Objeto JSON que describe uno o más encabezados que se incluirán en la respuesta
Cuerpo
body
No
Cuerpo de la respuesta
Al seleccionar dentro de cualquier campo de texto, obtendrá la opción de abrir la lista de contenido dinámico (icono de rayo). A continuación, puede seleccionar tokens que representen cualquier salida disponible de pasos anteriores del flujo de trabajo. Las propiedades del esquema que especifique también aparecen en esta lista de contenido dinámico. Puede seleccionar estas propiedades para usarlas en el flujo de trabajo.
Por ejemplo, para el cuadro Encabezados, incluya Content-Type como nombre de clave y establezca el valor de clave en aplicación/JSON, tal y como se mencionó anteriormente en este artículo. Para el cuadro Cuerpo, puede seleccionar la salida del cuerpo del desencadenador en la lista de contenido dinámico.
Para ver los encabezados en formato JSON, seleccione Switch to text view (Cambiar a la vista de texto).
Para agregar más propiedades para la acción, como un esquema JSON para el cuerpo de respuesta, abra la lista Agregar nuevo parámetro y seleccione los parámetros que quiera agregar.
Cuando haya terminado, guarde el flujo de trabajo. En la barra de herramientas del diseñador, seleccione Save (Guardar).
Prueba del flujo de trabajo
Para desencadenar el flujo de trabajo, envíe una solicitud HTTP a la dirección URL generada para el desencadenador de Solicitud, incluido el método que espera el desencadenador de Solicitud mediante la herramienta de solicitud HTTP y sus instrucciones.
En un flujo de trabajo de una aplicación lógica estándar que comienza con el desencadenador de Solicitud (pero no un desencadenador de webhook), el aprovisionamiento de Azure Functions se puede usar para autenticar las llamadas entrantes enviadas al punto de conexión creado por el desencadenador mediante una identidad administrada. Este aprovisionamiento también se denomina "Easy Auth". Para información, consulte Desencadenamiento de flujos de trabajo en Aplicaciones lógicas estándar con Easy Auth.
Aprenda a crear un flujo de trabajo para ejecutar su negocio con Azure Logic Apps mediante desencadenadores, acciones y operadores condicionales precompilados.