Desarrollo de una API con Laravel utilizando TDD y JSON:API
En este curso aprenderemos a desarrollar, con TDD, una API que se adhiera a la especificación JSON:API utilizando Laravel.
Resumen del curso
- De principiante a experto
- 10h 14m de video HD
- 97 lecciones
- Ejercicios prácticos
- Acceso de por vida
- Aprende a tu propio ritmo
Lecciones cortas, concisas y precisas.
No te quemes en búsquedas exhaustivas que te impiden lograr tus metas.
En Aprendible obtienes:
- Lecciones que optimizan tu aprendizaje en menor tiempo
- Audios y videos de alta calidad
- Explicaciones paso a paso, sin rodeos, ni balbuceos.
Construye desde HOY tu camino como Desarrollador Web Moderno
Contenido del curso
10h 14m de contenido, 97 lecciones
1: Introducción
FREE
03:25En este video te doy la bienvenida al curso y hacemos una demostración de la API que vamos a construir y las herramientas que vamos a utilizar.
FREE
11:02En esta lección repasamos los conceptos que debemos tener en cuenta antes de comenzar a desarrollar la API con Laravel.
PRO
11:18En esta lección revisamos qué es la especificación JSON:API y por qué es buena idea utilizarla al momento de construir tus APIs.
2: Construyendo la API
PRO
04:37En esta lección generamos de forma automática los modelos Article y Category con su respectivas migraciones y factories utilizando el paquete Laravel Blueprint
PRO
08:01En esta lección implementamos gradualmente la ruta que nos devolverá un artículo específico dependiendo de su identificador, y en el proceso aprendemos a utilizar "Resources" en Laravel
PRO
07:04En esta lección utilizamos Resource Objects en conjunto con Resource Collections para devolver los recursos siguiendo la especificación JSON:API.
PRO
08:39En esta lección damos el primer paso en la implementación de la ruta para crear artículos siguiendo la especificación JSON:API
PRO
10:04En esta lección implementamos la verificación de los headers que indica la especificación JSON:API y en el proceso aprendemos a testear middlewares en Laravel.
PRO
05:06En esta lección agregamos los headers JSON:API a todas las peticiones que se realicen mediante TESTS automatizados.
PRO
03:04En esta lección aprendemos a testear los errores de validación en nuestra API.
PRO
06:48En esta lección modificamos la respuesta json que nos provee Laravel cuando suceden errores de validación para que se adhiera al formato sugerido por la especificación JSON:API.
PRO
08:31En esta lección aprendemos a utiliza macros para extender las funcionalidades de las clases que vienen con el framework de Laravel
PRO
12:13En esta lección creamos y testeamos un middleware que se encargue de verificar que todas las peticiones POST y PATCH contengan un documento JSON:API válido
PRO
03:29En esta lección creamos una respuesta dedicada a formatear automáticamente todos los errores de validación según nos indica la especificación JSON:API
PRO
06:36En esta lección modificamos los test helpers para que automáticamente construyan el documento JSON:API enviándo solamente los atributos del recurso.
PRO
09:32En esta lección modificamos los helpers tests para que nos faciliten las pruebas automatizadas al momento de verificar la actualización de recursos en la API.
PRO
05:07En esta lección testeamos e implementamos la ruta para eliminar recursos, y reestructuramos el controlador para evitar duplicaciones de código.
PRO
15:41En esta lección utilizamos el slug, en lugar del id, como identificador del recurso articles, pero antes vamos a utilizar expresiones regulares para asegurarnos de que el slug tenga el formato correcto.
PRO
06:26En esta lección ordenamos los registros con Eloquent dependiendo del query string sort que recibamos, tal como lo indica la especificación JSON:API.
PRO
06:13En esta lección modificamos la consulta de Eloquent para permitir ordenar registros recibiendo múltiples parámetros sorts desde la url.
PRO
04:49En esta lección movemos la lógica de ordenar registros a un macro que podamos reutilizar en los demás modelos de Eloquent
PRO
10:46En esta lección aprendemos a modificar la paginación que viene por defecto en Laravel para que se adhiera a la especificación JSON:API
PRO
06:01En esta lección utilizamos mixins para reorganizar los macros que permiten ordenar y paginar registros.
PRO
09:43En esta lección transformamos los parámetros de la url en modificaciones a la consulta de eloquent del modelo Article.
PRO
08:03En esta lección reestructuramos la implementación de los filtros para que se puedan extender utilizando Query Scopes de Eloquent.
PRO
08:18En esta lección implementamos en nuestra API lo que se conoce como Sparse Fieldset en la especificación JSON:API
PRO
04:30En esta lección continuamos con la implementación de Sparse Fieldset para la ruta de artículos individuales, y reestructuramos la implementación para que se pueda reutilizar en cualquier modelo.
PRO
11:16En esta lección simplificamos el ArticleResource y extraemos toda la lógica de construcción del documento JSON:API para que sea reutilizable en cualquier recurso que creemos a futuro.
PRO
06:08En esta lección extendemos nuevamente el TestResponse agregando 2 nuevos métodos que nos faciliten la verificación de recursos JSON:API
PRO
09:27En esta lección utilizamos TDD para implementar las rutas index y show del recurso categorías utilizando los métodos personalizados de testing y el trait 'JsonResource' que creamos anteriormente.
PRO
10:42En esta lección utilizamos TDD para crear una clase que se encargue de crear documentos JSON:API de forma fluida y orientada a objetos.
PRO
06:00En esta lección continuamos con el desarrollo de la clase que genera los documentos JSON:API y en el proceso aprendemos a utilizar mocks en Laravel.
PRO
07:33En esta lección enviamos el objeto relationships para que se asocie el artículo con una categoría según lo indica la especificación JSON:API
PRO
04:33En esta lección testeamos y agregamos las reglas de validación de la relación category al momento de crear y actualizar un artículo.
PRO
08:05En esta lección implementamos los links de relación entre el artículo y la categoría según nos indica la especificación JSON:API
PRO
04:32En esta lección creamos el primer test que verifique que podemos incluir la categoría asociada de un artículo enviando el query string '?include=category'
PRO
03:49En esta lección verificamos que la ruta index también acepta el query string include para obtener las categorías asociadas de todos los artículos.
PRO
05:00En esta lección evitamos que se ejecuten consultas SQL adicionales (N+1) por cada relación de recurso solicitada.
PRO
03:51En esta lección modificamos la implementación para solo procesar los includes que hayamos definido con anterioridad.
PRO
05:06En esta lección implementamos el filtro categories para filtrar artículos dependiendo de la categoría que le pasemos por la url
PRO
03:21En esta lección testeamos e implementamos las rutas para obtener todos los autores y un autor específico.
PRO
05:00En esta lección aprendemos a implementar UUIDs en los modelos de Eloquent de una forma sencilla y reutilizable.
PRO
07:16En esta lección habilitamos la relación del artículo con su autor utilizando el UUID del usuario.
PRO
04:53En esta lección implementamos el include del autor en el recurso articles, y agregamos sus respectivos relationship links.
PRO
06:43En esta lección hacemos que los links de relaciones de la categoría y el autor, respondan a las peticiones JSON:API de tipo GET
PRO
06:00En esta lección implementamos las rutas específicas para modificar las relaciones
PRO
02:43En esta lección agregamos tests que verifiquen la existencia de las relaciones en la base de datos
PRO
02:41En esta lección actualizamos rápidamente la API a la versión 9 de Laravel y lo hacemos con el respaldo de la suite de test que hemos venido construyendo en el curso.
PRO
03:33En esta lección modificamos la respuesta de error 404 para que se adhiera a la especificación JSON:API
PRO
02:52En esta lección creamos una verificación personalizada que podamos reutilizar para verificar errores en formato JSON:API con Laravel 9
PRO
04:30En esta lección creamos una Custom Exception en Laravel 9 para simplificar el método register de la clase Handler.
PRO
06:02En esta lección formateamos el código de estado HTTP 400 para que se adhiera a los objetos de error según la especificación JSON:API
PRO
09:10En esta lección explicamos cómo funcionan los tokens o habilidades de tokens y cómo los vamos a utilizar en nuestra API con Laravel 9.
PRO
06:02En esta lección veremos como generar tokens de acceso, para identificar a los usuarios de la API, utilizando Laravel Sanctum.
PRO
05:45En esta lección agregamos los tests necesarios para verificar que la generación de tokens funciona correctamente.
PRO
04:59En esta lección utilizamos el middleware Auth con el guard Sanctum para proteger las rutas sensibles de la API.
PRO
02:05En esta lección interceptamos la excepción AuthenticationException para convertirla en una respuesta de error adherida a la especificación JSON:API.
PRO
07:27En esta lección utilizamos políticas de acceso para evitar que un usuario pueda editar y eliminar artículos de otros usuarios.
PRO
04:14En esta lección verificamos las habilidades de los tokens de acceso de Sanctum dentro de las políticas de acceso.
PRO
06:48En esta lección creamos un simple sistema de permisos en base de datos para aplicar a los usuarios y a los tokens de acceso en nuestra API con Laravel 9.
PRO
03:57En esta lección modificamos el LoginController para que automáticamente se asignen los permisos del usuario como habilidades del token de acceso.
PRO
07:02En esta lección veremos cómo eliminar los tokens de acceso del usuario actualmente autenticado.
PRO
08:59En esta lección veremos cómo registrar usuarios y validar la petición utilizando TDD.
PRO
10:27En esta lección mejoramos los Test Helpers para que sean más dinámicos y reutilizables.
PRO
04:54En esta lección movemos la lógica de guardar artículos fuera del Form Request dentro del Article Controller.
PRO
07:56En esta lección agregamos varios métodos a la clase Request de Laravel para interactuar con el document JSON:API de forma sencilla.
PRO
07:21En esta lección instalamos y configuramos Pint para dar formato a nuestro código y habilitamos los tests en paralelo.
PRO
07:51En esta lección comenzamos la implementación del recurso comments utilizando TDD.
PRO
09:38En esta lección utilizamos TDD para implementar la habilidad de los usuarios de dejar comentarios en cada artículo.
PRO
05:44En esta lección utilizamos TDD para implementar la validación de los comentarios.
PRO
10:20En esta lección implementamos con TDD la funcionalidad para editar comentarios y modificar sus relaciones y evitar que se puedan editar los comentarios de otros autores.
PRO
02:49En esta lección utilizamos TDD para implementar la eliminación de usuarios previa autorización utilizando políticas de acceso.
PRO
07:40En esta lección implementamos las rutas para obtener el identificador y los atributos del artículo relacionado a cada comentario.
PRO
05:32En esta lección modificamos el archivo de rutas API para agrupar las rutas que tienen relación entre sí, de modo que sean más fácil de modificar y leer.
PRO
06:08En esta lección implementamos las rutas necesarias para relacionar los comentarios con sus respectivos autores.
PRO
08:01En esta lección definimos la url para obtener múltiples identificadores de comentarios asociados a un artículo.
PRO
03:07En esta lección evitamos que la petición falle cuando intentamos obtener los comentarios de un artículo que no los tiene.
PRO
02:50En esta lección definimos el endpoint para obtener todos los comentarios de un artículo específico.
PRO
07:33En esta lección implementamos la ruta que permita, en una sola petición de tipo PATCH, enviar múltiples comentarios para actualizar su artículo asociado.
PRO
01:35En esta lección agregamos un test que verifique que los comentarios que enviemos para su actualización, existan en la base de datos.
PRO
07:34En esta lección implementamos el parámetro `include` que nos permita incluir múltiples comentarios (relación de uno a muchos), al momento de obtener un artículo.
PRO
03:11En esta lección implementamos el parámetro `include` con el valor `comments` en la ruta index de los artículos.
PRO
01:06En esta lección implementamos los links de relaciones en la respuesta cuando accedemos a la ruta de los comentarios.
PRO
04:46En esta lección actualizamos la API (y sus dependencias) paso a paso, hasta llevarla a la versión 10 de Laravel.
PRO
07:27En esta lección personalizamos el mensaje de error 404 dependiendo si existe o no un modelo.
PRO
03:15En esta lección agregamos 2 nuevos métodos al facade Request para obtener el TYPE y el ID del recurso solicitado.
PRO
03:50En esta lección nos aseguramos que los errores JSON:API ocurran únicamente en las peticiones que estén dentro del prefijo 'api'
PRO
09:09En esta lección creamos una excepción genérica que modifique todos los errores HTTP y los convierta en errores JSON:API
PRO
05:04En esta lección agrupamos los archivos relevantes de la especificación JSON:API para que sea más fácil de mantener y llevar a otros proyectos.
PRO
05:50En esta lección creamos un comando de artisan que nos permita rápidamente crear datos de prueba para utilizar en POSTMAN
PRO
11:50En esta lección agregamos las peticiones en POSTMAN y solucionamos algunos errores que tenemos actualmente en nuestra API.
PRO
05:47En esta lección utilizamos los datos generados por el comando de artisan y las guardamos como variables de entorno en Postman para facilitar su uso.
PRO
08:33En esta lección agregamos una petición con ejemplos en Postman para filtrar los artículos por fecha, categorías, autor y demás.
PRO
03:20En esta lección agregamos ejemplos de la precarga de la relación con el autor, la categoría y los comentarios en la petición de un artículo.
PRO
03:42En esta lección probamos el ordenamiento de artículos por titulo, contenido y fecha utilizando Postman.
PRO
01:52En esta lección utilizamos el parámetro field para indicarle a la API qué atributos queremos recibir en la respuesta.
PRO
05:44En esta lección agregamos las peticiones para hacer login, logout, registro y también para obtener al usuario "autenticado" en la API.
Tu instructor
Jorge García Coello
Aprendible.com
Jorge García es creador de Aprendible.com yDesarrollador Certificado en LaravelA través de su plataforma de aprendizaje y de otras plataformas de estudio, desde 2015 ha ayudado a decenas de miles de desarrolladores a mejorar sus oportunidades dentro del Desarrollo Web.
Lo que opinan nuestros estudiantes
Miles de desarrolladores han transformado su carrera con nosotros
WOW! Cada vez me impresionas más! Excelente trabajo! Ahora a probarlo
Beto Vásquez
Estos videos son impresionantes, no he visto nada mejor que ello. Un material muy limpio muy claro y profesional.
Kenneth Ruiz
Excelente tutorial ! Mil gracias. Como siempre todo muy bien explicado y de una manera sencilla.
Dileydi Ramos
Muchas gracias Jorge, muy clara la explicación. Gracias por aprendible.com enserio AMO tus videos los AMO.
César Cruz
Más del 90% de nuestros estudiantes recomiendan Aprendible por la calidad de los cursos.