Manejo de errores HTTP en las asignaciones de datos de servicios web
Los proyectos de integración de datos que incluyen información de servicios web externos pueden ser vulnerables a errores HTTP al recuperar datos remotos. Cuando los procesos de mapeo de datos se ejecutan de forma automatizada, es especialmente importante detectar e informar de los errores, incluso si estos ocurren con muy poca frecuencia.
Un mapeo de datos en MapForce puede incluir llamadas a servicios web y puede enviar el resultado directamente a un archivo o base de datos, o combinarlo con otras entradas para un procesamiento posterior. Independientemente del resultado final, un error de servicio web HTTP detectado en una solicitud a un servicio web REST pone en riesgo el mapeo.
MapForce incluye funciones para gestionar errores HTTP en lugar de simplemente interrumpir la ejecución de una transformación. Los desarrolladores pueden configurar el cuerpo de una llamada a un servicio web REST para manejar e informar sobre excepciones basándose en el código de estado HTTP devuelto.
Veamos un ejemplo.

Los datos de ejemplo de mapeo que se instalan con MapForce incluyen un mapeo real de un servicio web REST llamado AirportStatus.mfd. Este mapeo llama a un servicio web patrocinado por la Administración Federal de Aviación que proporciona información sobre retrasos operativos en los principales aeropuertos de Estados Unidos. La entrada del mapeo es un código de aeropuerto de tres letras, que se proporciona al servicio web, y el resultado se devuelve como un archivo JSON. El mapeo y el resultado de ejemplo se muestran a continuación.


En caso de cualquier error HTTP, la ejecución del mapeo fallaría.
El manual de ayuda de MapForce incluye una explicación sobre el manejo condicional de la respuesta de un servicio web REST. Podríamos simplemente copiar la sección para el manejo de errores HTTP y pegarla en el mapeo existente, pero no tendríamos forma de validar el resultado en caso de un error HTTP. ¡No podemos obligar al servicio web de la FAA a generar un error HTTP para realizar pruebas!
En lugar de eso, podemos utilizar el servicio web httpstat.us para generar diversos códigos de estado HTTP y sus descripciones, lo que facilita las pruebas en un mapeo de datos separado. Por ejemplo, la URL https://httpstat.us/200 en una ventana del navegador devuelve "200 OK". La URL https://httpstat.us/400 devuelve "400 Bad Request", y así sucesivamente para todos los códigos de estado definidos, hasta el 524.
Podemos implementar una solicitud REST para este servicio en MapForce simplemente abriendo un nuevo archivo de mapeo y haciendo clic en el botón "Insertar servicio web" en la barra de herramientas:

Esto abre el cuadro de diálogo de configuración de la llamada al servicio web, donde podemos configurar manualmente los ajustes. Utilizaremos un parámetro en lugar de un código de estado específico para poder probar fácilmente diferentes valores.

Aquí se muestra la correspondencia con una constante para proporcionar el parámetro del código:

Por defecto, una función de servicio web solo admite los valores de respuesta HTTP estándar en el rango de 200 a 299. Podemos añadir soporte para otros códigos haciendo clic derecho en el elemento "Cuerpo" en la sección "Respuesta" para abrir el cuadro de diálogo "Estructura de la respuesta" y ampliar el rango de códigos de estado aceptados:

Podemos mapear el resultado de la solicitud REST a un archivo de texto simple, utilizando la función "decode-mime-entity". El servicio web no proporciona el valor del conjunto de caracteres en la cabecera de la respuesta, por lo que conectaremos el valor constante "utf-8" a la función de decodificación.

Ahora podemos utilizar el botón "Salida" (Output) que se encuentra en la parte inferior del panel de mapeo de MapForce para ejecutar el proceso de mapeo y examinar el resultado

Podemos modificar la constante de entrada en el panel de configuración y ejecutar de nuevo para ver la diferencia:

Podemos utilizar una función de concatenación para combinar el resultado con otra información y crear un mensaje de estado más fácil de entender para el usuario


Una vez que probemos la configuración con una variedad de posibles códigos de estado HTTP y estemos satisfechos con los resultados, podemos añadir el manejo de errores HTTP a la configuración existente de AirportStatus.mfd mediante una operación de copiar y pegar. Primero, crearemos un nuevo cuerpo de respuesta en la configuración de AirportStatus para manejar los códigos de respuesta que estén fuera del rango normal. Podemos hacer clic con el botón derecho en el elemento "Cuerpo" en la sección de respuesta del servicio web para añadir un nuevo nodo "Cuerpo".

Esto añade el nuevo cuerpo y abre el diálogo "Estructura de la respuesta", donde especificaremos el procesamiento a aplicar a cualquier código de estado HTTP superior a 299:

Ahora podemos copiar los componentes de mapeo de nuestra definición de manejo de errores desde el mapeo de prueba, pegarlos en el mapeo de "AirportStatus" y conectar el nuevo cuerpo de la respuesta:

La configuración ahora se define con múltiples salidas. Durante la ejecución manual directamente en MapForce, el usuario elegiría una salida u otra. El valor de la ruta de ejecución para el manejo de errores HTTP se hace evidente cuando la configuración está destinada a ser ejecutada bajo control automatizado por MapForce Server o en una tarea programada regularmente en FlowForce Server. Por ejemplo, una configuración de mapeo de datos automatizada podría informar el estado de 50 aeropuertos diferentes cada media hora.
Durante la ejecución automatizada, todas las rutas de salida de la asignación de datos se procesan. Para garantizar que el servicio web se invoque solo una vez por cada entrada, un componente intermedio capturaría el resultado del servicio web antes de realizar la asignación al destino final. Si se produce algún error HTTP, la fecha, la hora y el código de estado HTTP exacto se registrarán.
Gestionar los errores HTTP en el mapeo de datos de los servicios web REST es como tener un cinturón de seguridad o un extintor: algo muy útil, pero que esperamos no tener que utilizar.
Si es nuevo en MapForce, consulte esta presentación en video para una introducción. Puede probar MapForce usted mismo con una prueba gratuita de 30 días.