29
Hace poco más de un mes publiqué una entrada introductoria al WSO2 API Manager, APIM, que incluía un ejemplo como usar esta herramienta, el cual pueden consultar para entender lo que haré en esta entrada. Básicamente estaremos viendo como exponer servicios usando el APIM y como consumirlos desde una aplicación web luego de autenticarnos. La idea siempre parte de lo que se aprecia en la siguiente imagen y lo estaremos implementando paso a paso.

Consumo de APIs usando el WSO2 API Manager

Embed Size (px)

DESCRIPTION

En esta presentación se muestra como desarrollar un ejemplo de consumo de APIs usando el WSO2 API Manager a partir de un conjunto de servicios desplegados en una aplicación JAX-RS y expuestos como APIs en el APIM para ser consumidos desde una webapp en JAVA

Citation preview

Page 1: Consumo de APIs usando el WSO2 API Manager

Hace poco más de un mes publiqué una entrada introductoria al WSO2 API Manager, APIM, que incluía un ejemplo como usar esta herramienta, el cual

pueden consultar para entender lo que haré en esta entrada.

Básicamente estaremos viendo como exponer servicios usando el APIM y como consumirlos desde una aplicación web luego de autenticarnos.

La idea siempre parte de lo que se aprecia en la siguiente imagen y lo estaremos implementando paso a paso.

Page 2: Consumo de APIs usando el WSO2 API Manager

Paso 1: desplegar la aplicación que contiene los servicios en el WSO2 Application Server.

Nos descargamos el fuente desde esta ubicación y en mi caso lo guardo en una carpeta que se llama “tutorial” y tendremos la siguiente estructura de

carpetas.

En este paso trabajaremos con el “pizza-shack-api” así que entramos en el directorio hasta llegar a la ruta:

[tutorial]\pizza-shack-api\src\main\java\com\pizzashack\ donde se puede observar los siguientes ficheros.

Page 3: Consumo de APIs usando el WSO2 API Manager

El único que he cambiado es el PizzaMenu.java debido a un problema con la localización, pues da problema con el punto y la coma en el formato de los

decimales.

Tan pronto lo descargan se ve así:

Page 4: Consumo de APIs usando el WSO2 API Manager

Luego de realizar el ajuste queda así:

Una vez hecho este cambio vamos a la raíz del proyecto y ejecutamos el comando Maven mvn clean package para que nos cree en la carpeta target el

fichero pizzashack-api-1.0.0.war que será la aplicación web que debemos desplegar en el WSO2 Application Server.

Iniciamos el servidor AS y bien podemos copiar el fichero en la ubicación [AS]\repository\deployment\server\webapps\ y entrar a través de la interfaz

gráfica de la herramienta e ir hasta Home> Manage > Applications > Add> JAX-WS/JAX-RS, y agregarla por esa vía.

Page 5: Consumo de APIs usando el WSO2 API Manager

En ambos casos ya tendrán desplegada la aplicación que contiene el servicio, tal y como pueden ver a continuación.

Page 6: Consumo de APIs usando el WSO2 API Manager
Page 7: Consumo de APIs usando el WSO2 API Manager

Al dar clic en el contexto vemos el dashboard de la aplicación.

Aquí pueden ver las opciones para generar un cliente, copiar su endpoint o ver el diseño del mismo dando clic en WADL.

Volviendo atrás, si dan clic en “Find Services” podrán ver el servicio que se implementa.

Page 8: Consumo de APIs usando el WSO2 API Manager

Y al dar clic en el enlace tenemos acceso a la descripción del servicio.

Si se fijan verán un servicio para obtener el menú a través de esta URL: http://127.0.0.1:9765/pizzashack-api-1.0.0/api/menu/ si lo probamos con un cliente

veremos lo siguiente:

Page 9: Consumo de APIs usando el WSO2 API Manager
Page 10: Consumo de APIs usando el WSO2 API Manager

Nos devuelve el nombre del plato, una descripción, un icono para que sea puesto en la aplicación web que consuma de este servicio y el precio.

Los invito llegado este punto que prueben el resto de los servicios para que vean cómo funcionan, así como revisar el fuente de cada servicio para que

dominen las operaciones implementadas.

Page 11: Consumo de APIs usando el WSO2 API Manager

Paso 2: publicar estos servicios como APIs en el WSO2 API Manager.

El objetivo de este paso es publicar los servicios como APIs, y para ello debemos acceder al WSO2 API-M Publisher a través de esta URL:

https://localhost:9443/publisher

Una vez autenticados debemos hasta APIs / Add New API tal y como muestra la siguiente imagen.

Page 12: Consumo de APIs usando el WSO2 API Manager
Page 13: Consumo de APIs usando el WSO2 API Manager

Crear las 3 APIs una por cada servicio usando la siguiente información:

Delivery API

API Name= pizzaShack

Context = /pizzashack/delivery

Version = 1.0.0

Production Endpoint URL=http://localhost:9765/pizzashack-api-1.0.0/api/delivery

API Resources = Dejar los valores por defecto

Order API

API Name= pizzashack-order

Context = /pizzashack/order

Version = 1.0.0

Production Endpoint URL=http://localhost:9765/pizzashack-api-1.0.0/api/order

API Resources = Dejar los valores por defecto

Page 14: Consumo de APIs usando el WSO2 API Manager

Menu API

API Name= pizzashack-menu

Context = /pizzashack/menu

Version = 1.0.0

Production Endpoint URL=http://localhost:9765/pizzashack-api-1.0.0/api/menu

API Resources = Dejar los valores por defecto

Una vez terminada esta acción tendremos todas las APIs ya creadas y visibles a través del Browser.

Page 15: Consumo de APIs usando el WSO2 API Manager

CREATED significa que están en el estado de creadas. Ahora debemos entrar a cada una y modificar el estado en la opción del ciclo de vida para ponerlas

como publicadas.

Page 16: Consumo de APIs usando el WSO2 API Manager

Si juegan un poco con el ciclo de vida verán que se lleva un control de las acciones realizadas. Algo muy útil para saber que ha pasado con el API en todo

momento.

Luego de cambiar el estado de las 3 APIs se visualizan de la siguiente manera.

Page 17: Consumo de APIs usando el WSO2 API Manager

Pueden observar cómo ha cambiado su estado.

Así de esta manera hemos creado las 3 APIs y las hemos publicado para que estén visibles en el próximo paso.

Page 18: Consumo de APIs usando el WSO2 API Manager

Paso 3: Crear una aplicación y subscribir las APIs.

Lo primero es ir al Store del WSO2 API Manager, para poder configurar adecuadamente el consumo de las APIs. Deben acceder a la siguiente URL:

https://localhost:9443/store

Tan pronto nos autenticamos en el Store podemos ver las 3 APIs creadas en el paso anterior.

Page 19: Consumo de APIs usando el WSO2 API Manager

Ahora debemos dar clic en una de las APIs, y en el combo de las aplicaciones seleccionar la aplicación por defecto o una que ustedes creen. En este ámbito

se entiende por aplicación a la agrupación lógica de un conjunto de APIs sobre la cual realizaremos determinadas acciones. En mi caso creo una nueva

aplicación con el nombre de “Pizza” y accediendo a cada API selecciono en el combobox de las aplicaciones la que he creado.

Al finalizar esta acción las 3 APIs están vinculadas con mi aplicación “Pizza”. La forma de ver esto es ir a la opción “My Subscriptions” en el menú superior y

verán seleccionada en un combobox la aplicación y se van al final de la página verán lo siguiente.

Page 20: Consumo de APIs usando el WSO2 API Manager

Al inicio de la página tenemos esta configuración:

La cual es muy importante pues nos generará las claves para consumir las APIs, así que le damos al botón “Generate” y obtenemos lo siguiente:

Page 21: Consumo de APIs usando el WSO2 API Manager

Este token que hemos generado es del tipo “Application Access Tokens”. La herramienta WSO2 API Manager permite generar además de este tipo de token

un “User Access Tokens”.

La diferencia es que el primero nos permite identificar y autenticar una aplicación completa, mientras que el segundo es para identificar y autenticar al

usuario final de una aplicación. Usamos el primer token porque nos permite con un solo token acceder a todas las APIs de la aplicación “Pizza”.

Ahora podemos probar el consumo de una API usando curl con el siguiente comando:

curl -k -H "Authorization: Bearer c4H4fMWbPGw8MNY5gVM9s_DAgXoa" https://localhost:8245/pizzashack/menu/1.0.0

resalto en negrita el token que debe corresponderse con el valor del “Access Token” que pueden observar en la imagen arriba.

Page 22: Consumo de APIs usando el WSO2 API Manager

Esto nos devuelve lo siguiente.

Con lo cual ya sabemos que nuestras APIs están online.

Page 23: Consumo de APIs usando el WSO2 API Manager

Paso 4: configurar y desplegar una aplicación web en java que consuma las APIs usando las claves generadas.

Llegado este momento debemos ir al código de la aplicación web que se encuentra en el directorio “pizza-shack-web” y ajustar los parámetros necesarios

en el fichero web.xml que se encuentra en [pizza-shack-web]\src\main\webapp\WEB-INF\web.xml

Page 24: Consumo de APIs usando el WSO2 API Manager

Luego vamos a la raíz del directorio y ejecutamos el comando Maven mvn clean package.

Esta acción nos genera la aplicación pizzashack.war que procedemos a desplegar también en el WSO2 Application Server.

Accedemos al WSO2 AS y vamos hasta: Home> Manage > Applications> Add> Web Applications buscamos el .war recién creado y le damos al botón

“Upload”.

Como la aplicación web recientemente subida al AS tiene entre sus parámetros el consumerKey y el consumerSecret la aplicación puede generar token

específicos para los usuarios y así de esta manera se restringe el acceso a las APIs.

Page 25: Consumo de APIs usando el WSO2 API Manager

Paso 5: acceder a la aplicación y consumir las APIs.

Ahora procedemos al siguiente enlace: http://localhost:9765/pizzashack/login.jsp y ponemos las credenciales admin/admin

El sistema nos deja entrar y podemos ver la siguiente pantalla, realmente deliciosa :-D

Page 26: Consumo de APIs usando el WSO2 API Manager

Ordenamos una pizza.

Y se nos genera un número de identificación.

Page 27: Consumo de APIs usando el WSO2 API Manager

Con este número vamos al menú superior y seleccionamos “My Orders”.

Page 28: Consumo de APIs usando el WSO2 API Manager

Introducimos el número y le damos “Find order”.

Page 29: Consumo de APIs usando el WSO2 API Manager

Como tenemos acceso al código fuente pues podemos ver la implementación tanto de la aplicación JAX-RS como de la aplicación web en JAVA y el consumo

de las APIs, esto lo estaremos analizando en entradas siguientes. Pero igual nos sigue quedando pendiente el tema del monitoreo del consumo de las APIs lo

cual realizaremos en la siguiente entrada conectando a esta solución el WSO2 BAM.

Espero les sea de utilidad.

Algunos enlaces que le pueden servir.

[1] - http://docs.wso2.org/display/AM150/Invoking+APIs+using+a+Web+App+Deployed+in+WSO2+AS [2] - http://lalajisureshika.blogspot.com/2013/06/passing-end-user-details-from-client-to.html [3] - http://asanka.abeysinghe.org/2014/01/oauth-for-application-developer-and.html [4] - http://pushpalankajaya.blogspot.com/2014/01/invoking-apis-using-web-app-with-oauth2.html