miércoles, 4 de enero de 2017

Ejemplo simple de API Manager + Data Service Server (REST) Parte II.

 

Hola a todos. En el post anterior nos quedamos con todo listo para empezar a crear nuestra API REST con el WSO2 API Manager. Repasemos un poco.

Tenemos una base de datos (PGSQL) con una tabla que guarda lo datos de nuestro catálogo de multimedia. Sobre esto, un servicio de datos en WSO2 DSS expuesto vía REST. Los datos se consumen en formato XML. Bien, ahora pasamos al API Manager.

Entramos en el APIM Publisher (Https://<servidor>:<puerto>/publisher) user y pass: admin, y tenemos una vista como esta:

clip_image002

Damos click en Add New API e iniciamos la creación de la misma.

En la próxima vista, tenemos 3 opciones de creación,

· Usando un API existente.

· Usando un endpoint SOAP. Y por supuesto.

· Diseñar un API nuevo. Que es la que usaremos en este ejemplo.

clip_image004

Damos click en la Design y luego en “Start Creating”. La siguiente página se divide en 2 secciones: Detalles generales y Definición del API. En los Detalles generales, como su nombre lo indica, definiremos los datos generales del api: Nombre, versión, contexto… entre otros, nótese que los datos obligatorios están resaltados con asterisco.

clip_image006

En este caso mi configuración queda así:

clip_image008

Seguimos para la sección de la definición de API. En esta sección definimos los recursos de las diferentes operaciones de nuestra API. Se definirá el nombre del recurso, el/los métodos por donde se exponen y otras configuraciones más que veremos enseguida.

Veremos en esta imagen que ya he creado un recurso para consultar el menú:

clip_image010

Se crea un recurso poniendo el patrón (/<recurso>) en el campo URL Pattern y seleccionando los métodos por donde se expondrá, luego le damos click en Add. Vamos a crear el recurso para obtener un único elemento según su id y que se exponga por GET.

clip_image012

Hacemos click en Add y pasamos a configurar el recurso que acabamos de crear haciendo click en la parte donde se especifica el método del recurso.

clip_image014

Aparecen más opciones de configuración las más importantes: Produces y Consume, las cuales especifican los formatos de entrada y salida de la operación, recuerden que en el post anterior, el servicio de datos devolvía el mensaje en formato xml, por lo tanto pondremos que estas operaciones consumen y producen formato application/xml, se especifica en los lugares señalados en la imagen anterior. Fijarse también que tomo por defecto el id como parámetro de la operación, eso es por lo especificamos en la url (/{<parámetro>}).

Damos click en “Next: Implement” para pasar a la 2da etapa: Implementación.

Aquí vemos 2 opciones, ocuparemos la primera: API gestionado.

clip_image016

Entramos en la opción y pasamos a configurar el tipo de Endpoint que se expone, y los endpoint de desarrollo y de producción.

clip_image018

Dejamos HTTP/REST como tipo de endpoint, y ponemos la dirección del servicio de datos (http://localhost:9764/services/mediaInfo_DataService?wsdl) en los campos de production y sandbox. Damos Test y veremos que nos sale una validación de que los endpoint están ok. Damos en Next y entramos en Gestión.

Este es casi el último paso, ahora pasamos a configurar algunas variables de gestión de nuestro api, como son la cantidad de solicitudes que pueden tener los usuarios, y cosas así. Lo configuramos como queda a continuación:

clip_image020

Luego vamos a Save & Publish y ya tenemos nuestro api publicado, debe salir un mensaje así:

clip_image022

Damos click en el botón señalado y llegamos al APIStore.

En el Store tenemos un resumen de nuestro API pero lo ke no interesa realmente está en el menú de la izquierda, ahí, vamos a Applications.

clip_image024

Y vamos directo a crear una aplicación, dando click en Add. Creamos una app para consumir nuestro api, le configuramos el nombre y la cuota para un token de seguridad (ya llegaremos ahí). En este caso dejamos unlimited en la cuota.

clip_image026

Luego click en Add. Con esto ya terminamos nuestra app, pero hay que generar las llaves de producción y desarrollo. Vamos a los tabs production key y sandbox key y damos en el botón generate keys. Queda algo asi:

Antes:

clip_image028

Después:

clip_image030

Y ya está. Ahora volvamos a nuestro api en el store, y suscribamos nuestra app al api.

clip_image032

Una vez hecho esto, podemos ir al API Console y ejecutar nuestras operaciones, vamos a ver como funciona…

clip_image034

En lo señalado podemos ver que app está invocando el api, que contexto (producción o desarrollo) se está invocando, y las operaciones expuestas.

clip_image036

Aquí vemos la invocación de menú.

clip_image038

Y este es getInfo, pasándole el id.

Bueno, y esto es todo. Espero que les sirva. Salu2 y hasta la próxima.

lunes, 19 de diciembre de 2016

Ejemplo simple de API Manager + Data Service Server (REST).

 

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:

clip_image002

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.

clip_image004

clip_image006

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.

clip_image008

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”

clip_image010

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.

image

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.

miércoles, 14 de septiembre de 2016

Tareas programadas en WSO2 ESB. +Tips

Realizando el ejemplo “SimpleStockQuoteService” de WSO2-ESB 490 tuve algunos problemas, consulté algunos blog y di con la solución bastante rápido. Aquí les dejo el post completo más los tips con las soluciones de los errores para que lo logren a la primera.