Hace un tiempo incursioné en el API Manager de WSO2. Aunque solo he raspado en la superficie, pude darme cuenta que guarda un potencial increíble. Hoy les dejo un ejemplo completo muy simple.
Crearemos un caso ficticio donde tendremos un servicio de datos muy simple que expone vía REST, un catálogo de videos con la dirección del servicio streaming entre otros datos. Espero que lo encuentren instructivo.
Esta es la arquitectura que seguiremos es la sgte:
Como pre requisito de este ejercicio, necesitamos tener, previamente instalas (en los casos necesarios) y configuradas las herramientas mostradas en la figura anterior.
[Nota: Para tener varias herramientas de WSO2 ejecutándose en el mismo host solo es necesario ir corriendo el valor offset en el fichero de configuración.]
Ejecutamos las herramientas de WSO2 (%CARBON_HOME%\bin\wso2server.bat o .sh) y una vez que esté en ejecución las URL de acceso se muestran en la consola.
Bien, primero empecemos con la estructura de la BD. Tendremos una tabla con una seria de datos simples, aquí les dejo el script para que lo ejecuten en el pgAdmin:
CREATE TABLE "mediaInfo"
(
"fileName" text NOT NULL,
"displayName" text NOT NULL,
"filePath" text NOT NULL,
"broadcastURI" text NOT NULL,
category text NOT NULL,
description text,
id serial NOT NULL
)
WITH (
OIDS=FALSE
);
INSERT INTO "mediaInfo" ("fileName", "displayName", "filePath", "broadcastURI", category, description) VALUES (‘media1.mpeg', 'Joyas sobre ruedas', 'h:\\2016.12.14\\documentales\\', 'mms://mediaserver:8080/documentales/', 'DOCUMENTALES', NULL);
INSERT INTO "mediaInfo" ("fileName", "displayName", "filePath", "broadcastURI", category, description) VALUES ('media1.mpeg', 'El Duo Mecanico', 'h:\\2016.12.14\\documentales\\', 'mms://mediaserver:8080/documentales/', 'DOCUMENTALES', NULL);
INSERT INTO "mediaInfo" ("fileName", "displayName", "filePath", "broadcastURI", category, description) VALUES ('media3.mpeg', 'La teoria del Big Bang (Temp 10. Cap 14.)', 'h:\\2016.12.14\\Series en Transmision\\', 'mms://mediaserver:8080/series/', 'SERIES', NULL);
INSERT INTO "mediaInfo" ("fileName", "displayName", "filePath", "broadcastURI", category, description) VALUES ('media4.mpeg', 'Alana X El Mundo - Dubai #3', 'h:\\2016.12.14\\Interesantes Variados\\Alanxelmundo\\', 'mms://mediaserver:8080/documentales/', 'DOCUMENTALES', NULL);
En este enlace les dejo un post para crear desde cero un servicio de datos. Solo decirle que deben dejar las operaciones select_all y select_by_key, esas son las 2 operaciones que ocuparemos en este ejemplo. Ahora enfoquémonos en exponerlo vía REST.
En la última etapa de configuración del Servicio de datos, creamos los recursos, uno por operación (en este ejemplo).
Vamos al link “Add new resource”
Y nos lleva a la página para crear un recurso. El recurso que ya está en la foto lo utilizaremos para la operación select_all, así que crearemos uno para invocar la operación select_by_key, la cual tiene como parámetro el id del dato a extraer.
En la foto se puede apreciar el nombre del recurso y el parámetro por donde pasaremos el id, fijarse abajo que también se lista el parámetro que espera la operación o la query y el parámetro del recurso. El método por donde se expone y el nombre de la query que usaremos.
Bien, hemos terminado de crear nuestro servicio de datos. Ahora vamos a por el API Manager, para crear nuestra API. Pero eso lo dejaremos para la segunda parte del post.
Nos vemos pronto. Salu2.