Consumo de APIs usando el WSO2 API Manager
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Consumo de APIs usando el WSO2 API Manager

on

  • 143 views

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 ...

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

Statistics

Views

Total Views
143
Views on SlideShare
143
Embed Views
0

Actions

Likes
1
Downloads
3
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Consumo de APIs usando el WSO2 API Manager Presentation Transcript

  • 1. 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.
  • 2. 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-apisrcmainjavacompizzashack donde se puede observar los siguientes ficheros.
  • 3. 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í:
  • 4. 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]repositorydeploymentserverwebapps 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.
  • 5. En ambos casos ya tendrán desplegada la aplicación que contiene el servicio, tal y como pueden ver a continuación.
  • 6. 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.
  • 7. 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:
  • 8. 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.
  • 9. 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.
  • 10. 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
  • 11. 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.
  • 12. 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.
  • 13. 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.
  • 14. 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.
  • 15. 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.
  • 16. 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.
  • 17. 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:
  • 18. 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.
  • 19. Esto nos devuelve lo siguiente. Con lo cual ya sabemos que nuestras APIs están online.
  • 20. 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]srcmainwebappWEB-INFweb.xml
  • 21. 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.
  • 22. 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
  • 23. Ordenamos una pizza. Y se nos genera un número de identificación.
  • 24. Con este número vamos al menú superior y seleccionamos “My Orders”.
  • 25. Introducimos el número y le damos “Find order”.
  • 26. 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