Cómo crear un servicio Web (Api Rest) con Laravel 5.5 y consumirlo desde Android

Hola que tal, bienvenido a este nuevo artículo en donde aprenderás cómo crear un servicio Web (Api Rest) con Laravel 5.5 y consumirlo desde Android, lo que vamos hacer es básicamente consumir información de una aplicación hecha en Laravel (PHP) y mostrarla en una aplicación en Android, aunque para entender el tutorial es de mucha importancia tener los conceptos claros (términos como Web Services, ApiRest) en este artículo no voy ha entrar en detalle sobre eso, asumo que si estás aquí es porque alguna idea tienes de todo este tema.

Antes de iniciar con el ejemplo y como requerimiento fundamental es tener instalado XAMP, este ejemplo es una continuación del artículo anterior Cómo crear un Crud con con Laravel 5.5es fundamental tener este ejemplo ya que partimos de ahí.

icon
icon

Como te mencionaba anteriormente en el artículo Cómo crear un Crud con con Laravel 5.5 habíamos creado un crud básico sobre una tabla, lo que vamos hacer que estos datos se puedan ver desde una aplicación Android lo que quiere decir que también debes tener instalado Android Studio 3.0 para este ejemplo. Si todavía no tienes instalado Android Studio en este artículo te explico Cómo instalar Android Studio 3.0 para desarrollar Aplicaciones Móviles.

Crear el servicio desde la aplicación en Laravel

La creación de servicios de acuerdo a la filosofía REST parte de la creación de métodos que puedan ser consumidos con peticiones HTTP (en el caso de consultas se puede usar el verbo GET), lo que quiere decir que cada método identificará un único recurso a ser consumido en la aplicación.

Ahora lo que vamos hacer es crear un servicio que permita leer la información (registros de libros) del crud anterior en la aplicación Android.

Crear el servicio

El diseño de una Api Rest en Laravel es muy sencilla, para esto en nuestra aplicación crud en el archivo LibroController vamos a crear el siguiente método:

Lo que estamos haciendo es obtener los registros de la tabla libros y devolverlos en formato JSON, para que puedan ser consumido por cualquier aplicación en nuestro caso por Android.

Lo siguiente que nos queda es mapear el método anterior en la ruta para poder hacer la petición y comprobar que funciona, para esto vamos adicionar lo siguiente en el archivo web.php (dentro de la carpeta route):

Aquí lo que le estamos diciendo es que cuando haya una petición HTTP y que sea de tipo GET, con la terminación ‘api/v1/libros’, se mapee al método getLibros  del controlador.

Probar que el servicio pueda ser consumido por un cliente

Para esto debe estar iniciado XAMP puesto que la aplicación y el método que creamos está en el servidor y para consultar que todo va bien vamos al navegador y en la URL escribimos localhost/nombre-del-proyecto/nombre-del-servicio (nombre definido en la ruta) como se ve a continuación (los registros devueltos dependerán de lo que tengas guardado en tu base de datos).

Lo que hicimos en el paso anterior es una buena forma de probar nuestro servicio pero también podemos usar un aplicación que se llama POSTMAN y que la puedes descargar del siguiente enlace descarga de postman, una vez instalada pones la url del proyecto junto con el servicio (el método con el que haces la petición), luego le das SEND y deberías tener algo como esto.

Si te das cuenta lo que nos devuelve nuestro servicio es un arreglo de libros y con esto nos aseguramos que estamos devolviendo los datos en formato JSON y que se pueden consumir con nuestro cliente en Android.

Crear la aplicación móvil en Android

Ya con nuestra aplicación creada y que en mi caso se llama Cliente Libros vamos a crear los archivos necesarios para crear el cliente y poder consumir nuestro servicio REST creado en Laravel.

Aunque hay varias librerías para crear clientes que consuman servicios REST en Android en este tutorial voy ha usar Retrofit y para esto debemos agregar las dependencias que vamos a usar en nuestros archivo build.gradle (Module:app).

También debemos agregar los permisos de acceso a internet para esto añadimos lo siguiente dentro del archivo AndroidManifiest.xml (Justo antes de <aplication):

Archivos para consumir el servicio desde la aplicación Android

Lo primero que vamos a crear es nuestro modelo que es donde vamos a recibir cada objeto Libro, los atributos debe llamarse igual que los recibidos en el servicio creado, creamos la clase Libro como se ve a continuación.

Ahora vamos a crear la interface ApiService donde declaramos el servicio que vamos a consumir y le decimos que traemos una lista de libros:

icon
icon

Es importante mencionar que la URL es la direccion IP del equipo donde vas a consumir el servicio, no funciona con localhost así que debes poner la IP y debes tener cuidado ya que cuando apagas y luego la enciendes tu computadora tu router te va asignar otra IP y si quieres de nuevo probar el cliente deberás poner la IP que actualmente te asigne tu router.

Consumo del servicio desde la aplicación en Android

A continuación creamos el cliente para consumir el servicio y enviamos a imprimir la lista de libros que nos devuelve el servicio creado en Laravel.

Y bien como puedes ver que en cuestión de minutos puedes crear un sencillo servicio REST en Laravel y consumirlo desde Android, a continuación dejo el enlace desde el repositorio de Github para que lo descargues y los pruebes Crud Laravel y API REST Github y el Cliente en Android.

Nos vemos en un próximo artículo hasta pronto!!

Opt In Image
Programación Web Full Stack
Suscríbete ahora y recibe los mejores contenidos sobre Programación Web en tu correo.

Tus datos estarán protegidos y 100% libre de Spam

Full Stack Developer, JavaScript, PHP, Java, Spring, Laravel, Vuejs, Blogger, aprendiendo y compartiendo conocimientos. Cursos de Programación Web en: https://programacionfullstack.com/

Artículos Recomendados

7 Thoughts to “Cómo crear un servicio Web (Api Rest) con Laravel 5.5 y consumirlo desde Android”

  1. Gaby

    Si a alguien le da error al acceder a la ip a mi me funcionó cambiando a 10.0.2.2 : public static final String URL=”http://10.0.2.2:8000/”;

  2. Javier

    Hola! Excelente tu Post!
    Tengo una consulta, como puedo subir la base de datos MySQl a un Host y una vez realizado esto, que debo modificar en el proyecto? muchas gracias!!!

    1. Hola Javier, Si te refieres al proyecto con Laravel pues en un hosting no he probado, si lo he hecho en un servidor virtual privado VPS. Únicamente lo que tendrías que instalar composer y crear el proyecto tal cual lo haces en local, crear también las migraciones, configurar el accesos que tienes a tu base de datos en el hosting y por último copiarte la parte que tiene la programación desde tu proyecto local. Lo puedes copiar usando ftp, no sería tal vez la forma más adecuada pero creo debería funcionar. La otra forma un poco más compleja pero más profesional sería usando un repositorio GIT con GITHUB o BITBUCKET, espero te sirva de ayuda- Saludos

  3. Hola amigo buen dia, tiene alguna guia audiovisial en la cual explica pasos como este y otros mas avanzados como el login? deseo crear una tienda en laravel y consumirlo en android pero no se como hacerlo… : XD

    1. Hola Alexi, en youtube tengo que un canal Canal de Youtube que puedes visitar aunque de momento no tengo este tutorial, lo estaré subiendo a futuro. Saludos

  4. Una pregunta amigo donde esta ubicada la carpeta que se muestra en la ruta?

    1. En que ruta, que carpeta, si puedes indicar o especificar mejor la pregunta por favor?

Dejar un Comentario