Cómo invocar APIs REST desde el FlowEngine
Este tutorial explicará cómo orquestar operaciones de APIs REST desde el FlowEngine de la plataforma.
Con el nuevo nodo "OnesaitPlatform Rest API invoker", vas a poder invocar a las distintas operaciones dadas de altas en el API Manager.
Veamos cómo puedes usar dicho nodo. Para ello sigue estos pasos:
Seleccionamos la opción "My Digital Flows" del menú:
Selecciona el dominio perteneciente a tu usuario:
Una vez estés dentro del dominio, arrastra un nodo de tipo "OnesaitPlatform Rest API invoker" al flujo y haz doble click en él para ver sus propiedades.
Name: Nombre que mostrará el nodo en el flujo.
REST APIs available: Listado de APIs que tu usuario tiene disponibles. Una vez seleccionada una API, se rellenarán automáticamente los campos "REST API" y "REST API Version".
Operations available: Listado de operaciones de la API seleccionada. Una vez seleccionada una operación, se rellenarán automáticamente los campos "REST API Operation" y "Operation Method".
Timeout: Tiempo en milisegundos que el nodo esperará para obtener respuesta de la operación invocada. En caso de que el tiempo de ejecución sea superior al indicado, se mostrará un error de "Connection timeout".
Operation input params: Esta es una lista dinámica que mostrará todos los parámetros (path, query, body, header o multipart) necesarios para la operación que hayamos seleccionado. Hay dos maneras de pasar los valores a dichos parámetros:
msg.: A través del contenido de un campo del mensaje (msg) recibido del nodo predecesor. Por Ejemplo:
En este modo, se permite el uso de operadores para acceder a posiciones dentro de un array o un mapa, por ejemplo:
Array: msg.payload[0].id
Mapa: msg.pet[garfield]. Nótese en este caso que el literal que actúa como clave del mapa no tiene comillas.
String: A través de un valor estático que puedes meter a mano, por ejemplo:
NOTA: En el caso de que uno de los parámetros sea un fichero (multipart/form-data), el valor debe de ir en un campo del mensaje recibido, siguiendo la estructura:
El buffer es el mismo que devuelve por ejemplo el nodo "File in" de la paleta de nodos por defecto de Node-RED:
Por ejemplo:
Una vez hayas terminado de rellenar los campos requeridos, vereás que la cantidad de salidas del nodo varía de una a varias. Cada salida del nodo representará un statusCode que la operación tenga definida. Además se añadirá una salida extra (etiquetada como "???- Other status code") por donde llegarán los mensajes con statusCode distinto del resto de salidas. Si colocas el cursor sobre las patillas de salida, verás el statusCode y una descripción
Tras seleccionar tu operación a invocar, guarda los cambios haciendo click en el botón "deploy":
En cuanto a la respuesta generada por el nodo, seguirá la siguiente estructura:
msg.statusCode: Código de retorno de la operación de la API o del propio nodo invocador en caso de error en la inserción de parámetros.
msg.payload: Respuesta (body response) de la operación. Siempre se intentará parsear a objeto. Si esto no es posible (dependerá de la operación de la API seleccionada), se mantendrá como un String.