REST API Entidades: Crear una ontología desde una API REST y ejemplos de uso con FlowEngine y Dashboards
Este tipo de ontologías se crean a partir de una API REST externa a la plataforma. Los datos no serán almacenados en la plataforma, sino que todas las operaciones sobre estas ontologiás serán derivadas a la API REST.
Creación de ontologías REST.
Para crear una ontología basada en API REST, debes seguir los siguientes pasos:
Accede a la opción de menú DEVELOPMENT > Mis Ontologías
Aparecerá un listado con las ontologías ya existentes. En la esquina superior derecha selecciona el botón “Create”:
A continuación selecciona el tipo de ontología que vas a crear, en este caso Creación desde una API REST
Llegados a este punto, y tras rellenar nombre, descripción y demás información básica de la ontología, tienes dos opciones:
Rellenar la definición de la API REST a mano.
Obtener los datos de manera automática a través de un swagger Json que defina la API externa a utilizar.
En este caso, para simplificar, opta por la segunda opción.
Para ello, indica la URL de la definición Swagger de la API REST a usar de la siguiente manera:
Tras hacer click en el botón Importar, aparecerá una ventana modal donde podrás seleccionar la definición (Esquema JSON) de entre todos los objetos definidos en la API:
En este caso, selecciona el tipo Device. Tras aceptar la selección de la definición de objeto, verás que se han rellenado de manera automática las siguientes secciones:
Nota: Todas estas secciones se pueden rellenar de manera manual o corregir sobre lo importado.URL base de la API REST:
Autenticación: Se permite autenticación Basic y mediante Api Key.
En este ejemplo, elige sin autenticación.Cabeceras: Puedes especificar las cabeceras que necesites para las llamadas a la API REST de la siguiente manera:
Operaciones: En esta sección puedes definir/seleccionar las distintas operaciones de la API REST, así como darles un comportamiento por defecto dentro de la plataforma:
Cada operación tendrá un path y método, así como un nombre. Además, tienes la posibilidad de asociar una función por defecto para cada operación. De esta manera la plataforma podrá tratar cada operación como las siguientes funciones:
GET_ALL: Esta operación se usará para recuperar todos los elementos de la ontología. Será invocado en las sentencias SELECT por defecto.
GET_BY_ID: Esta opción se usará para recuperar un único elemento por ID de la ontología. Será invocado en las sentencias SELECT ... WHERE ID=<value>
DELETE_ALL: Esta opción se usará para eliminar todos los elementos de una ontología. Será invocado en las sentencias DELETE FROM <ontology>; (sin filtros).
DELETE_BY_ID: Esta opción se usará para eliminar un único elemento de la ontología por ID. Será invocado en las sentencias DELETE FROM <ontology> WHERE ID=<value>
UPDATE_BY_ID: Esta opción se usará para actualizar un único elemento de la ontología por ID. Será invocado en las sentencias UPDATE FROM <otology> SET ... WHERE ID=<value>
INSERT: Esta opción se usará para insertar un nuevo objeto en una ontología. Será invocado en las sentencias INSERT INTO <ontology> ...
No es necesario asignar un comportamiento por defecto a cada operación, aunque sí que es recomendable. Cuando vayas a hacer una consulta SQL, siempre puedes especificar la operación junto con la ontología. Por ejemplo:
SELECT * from RestDevices.getDevicesUsingGet;
En caso de que hubíeras asignado la función "GET_ALL" a la operación "getAllDevices", podrías hacer la consulta sin indicar la operación:
SELECT * FROM RestDevices;
Para asignar un tipo de operación por defecto (o para cambiar cualquier otro atributo), haz click en el icono de edición:
De esta manera, los datos se cargarán en el formulario inferior, permitiéndote cambiar los atributos que estimes oportunos. En este ejemplo, puedes dar el comportamiento "GET_ALL" a la operación "getDevicesUsingGet":
También es posible especificar los PATH y QUERY params de cada llamada. Puedes observarlo por ejemplo con la operación getDeviceByIdUsingGET, a la que le puedes asignar la funcionalidad "GET_BY_ID". En este caso, será obligatorio que la operación tenga un parámetro (da igual que sea path o query):
Repitiendo estos pasos para todas las operaciones de actualización, inserción y borrado, quedarían de la siguiente manera:Esquema JSON: Al igual que para el resto de ontologías, necesitas un esquema JSON que defina el tipo de dato que tratará la ontología:
Guarda la definición de la ontología haciendo click en el botón Nuevo