Oracle Mobile Cloud Service: Creación de una API que se conecte a un WS externo

Como comenté en pasados posts acerca de Oracle Mobile Cloud Service, para poder realizar una llamada a un servicio web externo hay que realizarla a través de un connector. También hay que tener en cuenta que desde la API REST o desde los SDK que ofrece MCS solo es posible realizar llamadas a las diferentes API (custom o platform) con lo que es necesario realizar una implementación que realice la llamada al connector.

En este post voy a enseñaros como crear una API que se conecte a un servicio web externo, en este caso un servicio REST.

Los pasos que vamos a seguir son los siguientes:

  • Creación de un Mobile Backend (MBE)
  • Creación de un connector
  • Creación, diseño e implementación de una API.

Creación de un Mobile Backend (MBE)

Para empezar debemos crear un MBE. Desde el portal del desarrollador hacemos click en el icono de Mobile Backend y en la nueva ventana pulsamos en “New Mobile Backend” e introducimos el nombre y la descripción del mismo.

1

Creación de un connector

Ahora que tenemos creado el Mobile Backend lo dejamos de lado un rato. Y procedemos a crear el connector que enlazará MCS con el servicio web externo.

Nos dirigimos al menú de connectors y pulsamos en “New Connector” de tipo REST. Añadimos el nombre del connector y la url del servicio web. En este caso hemos usado una api rest publica de un proveedor del tiempo:

api.openweathermap.org/data/2.5/weather?q=Madrid

2

Una vez creado, para ver que funciona saltamos hasta el último paso del tren, ‘Test’, y pulsamos en ‘Test Connector’.

test connector

Como podéis ver nos devuelve los datos del tiempo de Madrid ya que en la url del servicio pasamos como parámetro ‘Madrid’.

3_

Como estaréis pensado, esto nos servirá de poco a la hora de utilizarlo en nuestra aplicación ya que el nombre de la ciudad lo deberíamos pasar como parámetro.

Para poder parametrizar esta llamada tenemos que hacer 2 cosas:

Primero modificar la url del servicio web y eliminar ‘?q=Madrid’

connector general parametro

Y segundo añadir una regla a nuestro connector. Para ello debemos navegar al apartado ‘Rules’ y añadir una nueva regla. En este caso hay que añadir un parámetro nuevo que será asociado a las llamadas que realicemos a este connector.

Es posible asociar esta regla a un Resource o a unos métodos HTTP determinados.

rules parameter

Vamos  a probar que nuestro conector funciona bien estando parametrizado.

Nos dirigimos a ‘Test’ y rellenamos al final de ‘Local URI’ con la cadena ‘?q=Barcelona’.

Si no rellenásemos ese campo utilizaría el valor por defecto que le hemos asociado en la regla que creamos anteriormente.

test connector parametro

Como podéis observar se ha realizado correctamente la llamada y nos devuelve el tiempo de Barcelona.

response test connector parametro

Creación, diseño e implementación de una API

En el último paso vamos a crear una API que será la encargada de acceder al connector que hemos creado en el paso anterior.

Para ello, desde dentro de nuestro MBE debemos crear una nueva API.

api creation 1

Introducimos el nombre de la API y pulsamos en ‘Create’

api creation 2

Dentro de este paso lo primero que tenemos que hacer es diseñar nuestra API.

Para que podamos realizar la llamada anónimamente para evitar tener que crear usuarios y asociarlos a un rol específico nos dirigiremos al apartado ‘Security’ y marcamos la opción ‘Allow Anonymous User Access’.

diseño api 1

Seguiremos definiendo el enpoint del servicio.

diseño api 2

Nuestro endpoint va a tener un parámetro que definiremos como {ciudad}. También tenemos que definir los métodos del endpoint.

diseño api 3

En este caso vamos a crear un método GET con lo que debemos hacer click en el botón ‘Add Method’ y seleccionar ‘GET’. En este punto podríamos definir los diferentes response que deseemos con datos estáticos que nos servirían para probar nuestro servicio. Como no vamos a utilizar datos estáticos, sino que vamos a realizar una llamada al connector, no añadiremos ningún response.

diseño api 4

Pulsamos en ‘Save’ para guardar los cambios y nos dirigimos al apartado de implementación.

En este apartado nos  es posible implementar la lógica de nuestra API utilizando node.js y para ello deberemos descargarnos el esqueleto de a implementación pulsando en el botón de descargar JavaScript Scaffold.

implementacion api 1

El fichero zip que nos descargamos contiene los siguientes ficheros.

El fichero package.json es un fichero de configuración donde podremos añadir por ejemplo las dependencias de nuestra API.

El fichero tiempoporciudad.js es el fichero en el que deberemos escribir nuestra implementación.

Y por último el fichero samples.txt incluye una serie de ejemplos de implementación.

implementacion api 2

Para empezar vamos a añadir las dependencias de nuestra API, en este caso tendríamos que añadir la URI del conector y el número de la versiónen el fichero package.json

implementacion api 3

Seguiremos modificando el fichero tiempoporciudad.js

La lógica que se sigue en este método es la de obtener el parámetro ciudad del request y realizar una llamada GET al connector pasándole como parametro el valor obtenido. Una vez realizada la llamada nos quedaría incluir en el response de nuestra API el response obtenido de la llama al conector.

También hemos incluido la gestión de errores.

implementacion api 4

Una vez que tenemos implementada nuestra API, nos quedaría introducir ambos ficheros dentro del zip que nos descargamos, volver a la página de implementación de la API y subir el fichero zip.

implementacion api 5

Bien, hasta este punto hemos creado el Mobile Backend, nos hemos conectado al servicio REST externo utilizando un connector y hemos creado una API asociada al Mobile Backend y que realiza la llamada al connector.

Por último nos queda probar nuestra API para ver que todo funciona correctamente.

Pulsaremos en el botón ‘Test’ de nuestra API e introducimos la ciudad deseada, en este caso Barcelona.

test final

Pulsamos en ‘Test Endpoint’ y podemos ver que nos devuelve el tiempo de la ciudad de Barcelona.

test final 2

Twitter
LinkedIn
Evolución, innovación y transformación
37 Service Expertise avalados por Oracle 
Nuestra propuesta de valor
Posts 100% Oracle
Sigue nuestro día a día