Creación de Recursos en Laravel para Formato Personalizado de Datos
Resumen
¿Cómo mejorar el formato de los recursos en una API?
Desarrollar una API no se trata solo de conectar y obtener datos, sino de presentarlos de manera organizada y comprensible. En este contexto, aprender a utilizar recursos para mejorar el formato de los datos es crucial. A continuación, veremos cómo crear y configurar una clase de recurso en Laravel para lograr un diseño más intuitivo y fácil de consumir por aplicaciones externas.
¿Cómo crear una clase de recurso en Laravel?
Para mejorar la presentación de los datos, se puede utilizar una clase de recurso en Laravel que permite definir un formato específico.
Abrir el terminal en Visual Studio Code: Accedemos al terminal integrado de nuestro editor de código favorito.
Crear la clase de recurso con Artisan:
php artisan make:resource BunoPostResource
La clase se denomina BunoPostResource. Observa que "Buno" indica la versión uno de la API (abreviada como "buno"). Aunque no tengamos planificada una versión dos, estipulamos este prefijo anticipándonos a futuras expansiones.
¿Cómo configuro la estructura del recurso?
El objetivo es dar formato a los datos que estamos obteniendo de nuestra base de datos y que se visualizan en Postman o se entregan a otros servicios.
Modificar la clase de recurso: Una vez generada, encontramos la carpeta creada dentro de HTTP en nuestro proyecto. Solo es necesario cambiar la información que queremos mostrar:
En este caso, solo mostramos los campos title, slug, excerpt y content. Estos campos se extraerán, algunos de manera directa y otros como campos virtuales, del modelo Post.
¿Cómo se implementa el recurso en el controlador?
Después de definir el recurso, es necesario integrarlo en el controlador correspondiente para que se use a la hora de devolver datos.
Configurar el controlador:
Ir al controlador de versión uno, por ejemplo, PostController.
Importar el recurso recién creado:
useApp\Http\Resources\BunoPostResource;
Utilizar el recurso en el método del controlador:
Retornar los datos usando la clase de recurso:
returnnewBunoPostResource($post);
¿Qué beneficios ofrece el uso de recursos en una API?
El uso de recursos forma parte del proceso para ofrecer APIs más limpias, mantenibles y flexibles.
Formato flexible y dinámico: Permite decidir qué información mostrar sin alterar los datos en la base de datos.
Consistencia en la salida: Un formato definido asegura que otras aplicaciones o servicios que consumen la API lo hagan de manera uniforme.
Facilidad de mantenimiento y escalabilidad: Al preparar nuestra API para futuras versiones, facilitamos la evolución y mantenimiento del proyecto.
En resumen, para perfeccionar la experiencia de los usuarios al interactuar con una API, es vital prestar atención al formato de los datos y cómo estos se presentan, asegurando así una arquitectura sólida y preparada para el crecimiento.
Esto Funciona de la siguiente manera:
Tenemos una ruta
la ruta dispara un controlador
el controlador tiene dentro e si una acción
esta acción retorna ese recurso y eso es lo que le mostramos al usuario o al software que se vaya a conectar a nuestra aplicación.
Aunque, no vayan con muchas expectativas a ese curso jajaja
yo quiero hacer el de Laravel avanzado, en su opinion companeros, que tan bueno es?
Eloquent: API Resources
Cuando se construye una API, se puede necesitar una capa de transformación entre el Modelo Eloquent y la respuesta JSON.
En esta capa de Recursos se pueden limitar la cantidad de campos del registro y mejorar la presentación de los mismos.
Documentación
Remover el key data de la respuesta
Si no les gusta el key data que se agrega automáticamente, pueden quitarlo agregando la siguiente propiedad a su Resource
publicstatic$wrap=null;
wrap = envoltura 😉
EN SI, ESTA BIEN LO QUE ESTA EPLICANDO EL PROFESOR, PERO NO SE ACOSTUMBREN A USAR EL RECURSO PARA FILTRAR QUE CAMPOS MOSTRAMOS Y CUAL NO. ESO SE TIENE QUE HACER EN EL MODELO, NO SE TRAIGAN EN EL SELECT COLUMNAS QUE NO VAN A USAR, ESOS SON RECURSOS QUE SERVIDOR DE BASE DE DATOS ESTA USANDO AL PEDO.
YA DESDE EL MODELO SEPAN QUE VAN A USAR Y QUE NO.
Orale, no conocia los resource de laravel para apis.
Me pregunto cuantas formas de uso tienen?
(Comenten su codigo de como lo usan)
Son cosas que sorprenden de Laravel :)
En pocas palabras este capitulo describe un DTO.
Si tienen problemas al consultar los datos en la versión actual de Laravel y no están seguros de qué se debe enviar a PostResource, recuerden que se trata de la variable que contiene los datos resultantes de la consulta. En el ejemplo, esta variable es $post.
public function show($id) { $post = Post::find($id); return new V1PostResource($post); }
de donde sale excerpt si no existe como campo en la base de datos.
en el video anterior explican que es un comando custon de laravel y se ancla de los detalles