Creando una API con Lumen — CRUD
¡Hola a todos! Recientemente he creado una API con Lumen y creo que sería muy bueno compartirlo.
El Laravel Lumen es un microframework PHP increíblemente rápido para la construcción de aplicaciones web. Con el Lumen es posible crear rutas, filas, almacenamiento en cache y abstracción de base de datos. La version actual es la 5.8 y tiene los seguientes requisitos:
- PHP >= 7.1.3
- OpenSSL PHP Extension
- PDO PHP Extension
- Mbstring PHP Extension
Instalación
Lumen utiliza Composer para gestionar las dependencias, después de instalar el Composer ejecute el siguiente código en el terminal:
composer global require laravel/installer
Después de la instalación vaya a la carpeta web raíz y ejecute en el terminal:
lumen new lumen_api
Aún el terminal ejecute:
php -S localhost:8000 -t public
Y en el browser acceda http://localhost:8000/
Configuración
En la carpeta raíz del proyecto hay un archivo llamado .env
que está en cargo de determinadas variables de configuración, como por ejemplo la base de datos:
Base de datos
En el archivo bootstrap/app.php
se necesita quitar los comentarios de las líneas $app->withFacades();
y $app->withEloquent();
Ahora vamos crear la tabla books con el migration:
php artisan make:migration table_books --create=books
Crearemos tambien el archivo app/BookModel.php
Y ahora ejecute en el terminal:
php artisan migrate
Controllers
Crearemos el archivo de controller app/Http/Controllers/BookController.php
Tendremos funciones para listar todos los libros, exhibir un sólo resultado, grabar, actualizar y borrar.
Rutas
Basandosé en el controller, crearemos las rutas para la aplicación en el archivo routes/web.php
:
Accedendo la aplicación con API Client
Yo tengo la costumbre de trabajar con el Insomnia, pero hay otros API Clients como Postman o Katalon.
Sin embargo, vamos crear nuestro primer libro con un POST en http://localhost:8000/api/book seleccionando la opción Multipart. No te olvides de informar el title, author y description del libro.
Con un GET en http://localhost:8000/api/book es posible listar todos los libros:
Ya con un GET en http://localhost:8000/api/book/{id} pero informando el id del libro es posible listar un sólo, como por ejemplo el id 1:
Con un PUT en http://localhost:8000/api/book/{id} es posible cambiar las informaciones del libro, siguiendo lo mismo procedimiento con Multipart y informando el id del libro:
Y por último el método para borrar un registro, acceda http://localhost:8000/api/book/{id} con DELETE
Todo el script creado en este artículo está disponible en el Github