La unión entre una API REST y Android es un tema muy interesante porque nos permite tener nuestro servicio web en el bolsillo. Esto es una gran ventaja porque, por ejemplo, si tienes una aplicación web de gestión funcionando bajo arquitectura REST, puedes interactuar con ella desde cualquier parte gracias a un dispositivo móvil.

En realidad, la conexión “API REST Android” presenta el mismo funcionamiento que si realizamos una conexión desde Android a un recurso que funcione bajo el protocolo HTTP. En lugar de utilizar los métodos HTTP GET, POST, PUT y DELETE; vamos a utilizar en Android los métodos HttpGet, HttpPost, HttpPut y HttpDelete, respectivamente.

Para aquellos que no sepan que es una API REST, en nuestro blog podrás encontrar un artículo donde explicamos que es y cuales son sus características principales. Si lo quieres ver puedes hacerlo pulsando aquí.

Ejemplo de una conexión “API REST Android”

Puesto que crear una API REST requiere su tiempo y trabajo, y como solo es un ejemplo, vamos a utilizar un servicio que ya existe e implementa esta arquitectura. Este servicio es Appnima. En su página web podéis encontrar más información. Ver web de Appnima

Para comunicarnos desde Android crearemos una aplicación simple, sobretodo para explicar la conexión sin tocar aspectos visuales ni de diseño. Esta comunicación se llevará a cabo utilizando mensajes en formato JSON. Tanto las peticiones como las respuestas vendrán codificadas con este formato.

Además, hemos creado una clase MyAsynTask que se encargará de realizar todas las peticiones a la API REST en segundo plano. En ella se utilizará los cuatros métodos mencionados y se aplicará una cabecera para indicar que usamos JSON.

Podemos ver un fragmento de la conexión utilizando el método GET, siendo “url” la URL del recurso al que queremos acceder:

...

HttpClient cliente = new DefaultHttpClient();
enviar.setHeader(“content-type”,”application/json”);
HttpGet envioget = new HttpGet(url);
envioget.setHeader("content-type","application/json");
respuesta = cliente.execute(envioget);
resultado = EntityUtils.toString(respuesta.getEntity());

...

El usuario se llama “usuario1” y su contraseña es “123456”, dato que usaremos más adelante. Comenzaremos con pulsar el botón con valor “+ info”. Este botón ejecutará una petición GET a nuestra API REST que nos devolverá una cadena con toda la información disponible del usuario en sesión.

Utilizamos la siguiente URL para acceder al recurso, añadiéndole la ID del usuario del que queremos recibir la información.

 http://api.appnima.com/user/info

pantalla 1 api rest android gausswebapp

Vemos que, efectivamente, se transmite en formato JSON.

A continuación, vamos a escribir una entrada. Para ello escribiremos un mensaje, por ejemplo “Hola”, y pulsaremos en el botón “Enviar”. Esto ejecutará una petición POST que escribirá la entrada en la base de datos.

 http://api.appnima.com/network/post

Esta es la URL a la que atacaremos para realizar la petición de escritura.

pantalla 2 api rest android gausswebapp

Vemos como nos devuelve un mensaje en formato JSON con todos los datos referentes a la entrada que acabamos de escribir. Si acto seguido pulsamos en “Borrar”, desde nuestra aplicación realizaremos una petición DELETE hacia la API REST Appnima, produciendo en ella el borrado de la entrada que hemos escrito. Nos devolverá un mensaje de confirmación como el que se ve en la imagen:

pantalla 3 api rest android gausswebapp

Igualmente que pasaba con la acción de escritura, para realizar el borrado de la entrada la realizaremos dirigiéndonos a la misma URL:

 http://api.appnima.com/network/post/

Por último, para probar las peticiones PUT vamos a modificar la contraseña del usuario que tenemos en sesión. Para ello pulsaremos en “Cambiar contraseña”, escribirenos la nueva y aceptamos, provocando así la ejecución de la petición PUT y la modificación de la contraseña. Vemos que nuevamente nos devuelve un mensaje de confirmación.

pantalla 4 api rest android gausswebapp

En este caso, la URL del recurso es la siguiente:

 http://api.appnima.com/user/password

Para entender el funcionamiento de esta API REST, podéis entrar en su página web y acceder a su documentación oficial, donde viene todo lo necesario para entender como funciona. Ver documentación Appnima

Conclusión

A grosso modo habéis podido observar como podemos lograr la conexión de una API REST con una aplicación en Android, ofreciéndonos la posibilidad de trasladar nuestros proyectos web basados en API REST a una aplicación móvil. Hemos abstraído el código para no alargar mucho más el artículo, puesto que el objetivo es mostrarles que conectar una aplicación con una API REST no tiene mucha complicación.

Si estás interesado en utilizar esta conexión REST Android para tu negocio, como por ejemplo para implementar una red social, una sistema de facturación, o cualquier otra aplicación que surja; y la necesitas a nivel de aplicación móvil, a nivel de web o ambas, puedes ponerte en contacto con nosotros rellenando el formulario de nuestra página de contacto: http://gausswebapp.com/nosotros