
Desarrollo de una API con Laravel
0%
117 lecciones 13h 48m Nuevas lecciones cada semana
En este curso aprenderemos a desarrollar, con TDD, una API que se adhiera a la especificación JSON:API utilizando Laravel.
Introducción
FREE
03:251. Introducción al curso Desarrollo de una API con Laravel
En 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:022. Qué es una API REST
En esta lección repasamos los conceptos que debemos tener en cuenta antes de comenzar a desarrollar la API con Laravel.
FREE
11:183. Qué es la especificación JSON:API
En esta lección revisamos qué es la especificación JSON:API y por qué es buena idea utilizarla al momento de construir tus APIs.
Construyendo la API
FREE
04:374. Cómo crear el esquema de bases de datos en Laravel con Blueprint
En esta lección generamos de forma automática los modelos Article y Category con su respectivas migraciones y factories utilizando el paquete Laravel Blueprint
FREE
08:015. Implementación de la ruta para obtener artículos individuales
En 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
FREE
07:046. Implementando la ruta para obtener todos los artículos
En esta lección utilizamos Resource Objects en conjunto con Resource Collections para devolver los recursos siguiendo la especificación JSON:API.
PRO
08:397. Implementando la ruta para crear artículos
En 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:048. Middleware para verificar los headers JSON:API
En 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:069. Cómo modificar las peticiones HTTP en los TEST
En esta lección agregamos los headers JSON:API a todas las peticiones que se realicen mediante TESTS automatizados.
PRO
03:0410. Probando errores de validación en formato JSON
En esta lección aprendemos a testear los errores de validación en nuestra API.
PRO
06:4811. Cómo formatear los errores según la especificación JSON:API
En 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:3112. Extendiendo la clase TestResponse utilizando macros
En esta lección aprendemos a utiliza macros para extender las funcionalidades de las clases que vienen con el framework de Laravel
PRO
12:1313. Validando el documento JSON:API
En 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:2914. Cómo modificar los errores de validación en Laravel
En 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:3615. Automatizando la creación del Documento JSON:API
En 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:3216. Actualización de recursos siguiendo la especificación JSON:API
En 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:0717. Eliminación de recursos siguiendo la especificación JSON:API
En esta lección testeamos e implementamos la ruta para eliminar recursos, y reestructuramos el controlador para evitar duplicaciones de código.
PRO
15:4118. Validación avanzada del slug
En 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:2619. Cómo ordenar registros con Eloquent
En 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:1320. Cómo ordenar registros por múltiples parámetros en Laravel
En esta lección modificamos la consulta de Eloquent para permitir ordenar registros recibiendo múltiples parámetros sorts desde la url.
PRO
04:4921. Extendiendo el Query Builder con macros
En 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:4622. Implementando la paginación JSON:API
En 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:0123. Reorganizando Macros utilizando Mixins
En esta lección utilizamos mixins para reorganizar los macros que permiten ordenar y paginar registros.
PRO
09:4324. Cómo filtrar recursos siguiendo la especificación JSON:API
En esta lección transformamos los parámetros de la url en modificaciones a la consulta de eloquent del modelo Article.
PRO
08:0325. Utilizando Query Scopes como Filtros
En esta lección reestructuramos la implementación de los filtros para que se puedan extender utilizando Query Scopes de Eloquent.
PRO
08:1826. Cómo solicitar campos específicos de un recurso (Sparse Fieldset)
En esta lección implementamos en nuestra API lo que se conoce como Sparse Fieldset en la especificación JSON:API
PRO
04:3027. Sparse Fieldset en la ruta detalle
En 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:1628. Restructurando el Laravel Resource
En 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:0829. Simplificando la verificación de recursos JSON:API
En esta lección extendemos nuevamente el TestResponse agregando 2 nuevos métodos que nos faciliten la verificación de recursos JSON:API
PRO
09:2730. Implementando el recurso para las categorías
En 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:4231. Creando un constructor de documentos JSON:API
En 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:0032. Cómo utilizar MOCKS dentro de tests unitarios
En 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:3333. Creando un recurso con sus relaciones
En 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:3334. Cómo validar relaciones
En 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.
FREE
08:0535. Generando los links de relaciones (Relationship Links)
En 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:3236. Habilitando el query include
En 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:4937. Incluir relaciones de múltiples recursos
En 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:0038. Carga condicional de relaciones
En esta lección evitamos que se ejecuten consultas SQL adicionales (N+1) por cada relación de recurso solicitada.
PRO
03:5139. Validación de includes
En esta lección modificamos la implementación para solo procesar los includes que hayamos definido con anterioridad.
PRO
05:0640. Filtrar recursos por sus relaciones
En esta lección implementamos el filtro categories para filtrar artículos dependiendo de la categoría que le pasemos por la url
PRO
03:2141. Implementando el recurso para los autores
En esta lección testeamos e implementamos las rutas para obtener todos los autores y un autor específico.
FREE
05:0042. Cómo utilizar UUIDs como llave primaria en Eloquent
En esta lección aprendemos a implementar UUIDs en los modelos de Eloquent de una forma sencilla y reutilizable.
PRO
07:1643. Relacionando el artículo con su autor
En esta lección habilitamos la relación del artículo con su autor utilizando el UUID del usuario.
PRO
04:5344. Implementando Include y links del autor
En esta lección implementamos el include del autor en el recurso articles, y agregamos sus respectivos relationship links.
PRO
06:4345. Implementando los links de relaciones
En 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:0046. Implementando los links de relaciones - Parte 2
En esta lección implementamos las rutas específicas para modificar las relaciones
PRO
02:4347. Validación de los links de relaciones
En esta lección agregamos tests que verifiquen la existencia de las relaciones en la base de datos
PRO
02:4148. Actualizando la API a Laravel 9
En 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:3349. Cómo interceptar las excepciones HTTP en Laravel
En esta lección modificamos la respuesta de error 404 para que se adhiera a la especificación JSON:API
PRO
02:5250. Custom assertion para verificar errores JSON:API
En esta lección creamos una verificación personalizada que podamos reutilizar para verificar errores en formato JSON:API con Laravel 9
PRO
04:3051. Cómo crear excepciones personalizadas en Laravel
En esta lección creamos una Custom Exception en Laravel 9 para simplificar el método register de la clase Handler.
PRO
06:0252. Interceptando el error 400 en la API
En 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:1054. Qué son y cómo funcionan los tokens en Laravel Sanctum
En 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:0255. Cómo generar tokens de acceso con Laravel Sanctum
En esta lección veremos como generar tokens de acceso, para identificar a los usuarios de la API, utilizando Laravel Sanctum.
PRO
05:4556. Validando la generación de tokens de acceso
En esta lección agregamos los tests necesarios para verificar que la generación de tokens funciona correctamente.
PRO
04:5957. Protegiendo las rutas API con Sanctum en Laravel 9
En esta lección utilizamos el middleware Auth con el guard Sanctum para proteger las rutas sensibles de la API.
PRO
02:0558. Interceptando el error de autenticación
En esta lección interceptamos la excepción AuthenticationException para convertirla en una respuesta de error adherida a la especificación JSON:API.
PRO
07:2759. Políticas de acceso para proteger la API
En esta lección utilizamos políticas de acceso para evitar que un usuario pueda editar y eliminar artículos de otros usuarios.
PRO
04:1460. Habilidades de Token dentro de Políticas de Acceso
En esta lección verificamos las habilidades de los tokens de acceso de Sanctum dentro de las políticas de acceso.
PRO
06:4861. Sistema de permisos para la API
En 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:5762. Permisos de usuario como habilidades de token
En esta lección modificamos el LoginController para que automáticamente se asignen los permisos del usuario como habilidades del token de acceso.
Versión anterior del curso
PRO
08:2553. Inicialización del proyecto con Laravel Blueprint
En esta lección instalamos una nueva aplicación de Laravel y creamos los modelos, migraciones y factories con ayuda de Blueprint.
PRO
15:4863. Resource Objects y Resource Collections
En esta lección aprenderemos a utilizar Laravel Resources para listar recursos siguiendo la especificación JSON:API, y también veremos cómo mantener una API con múltiples versiones.
PRO
10:5064. Cómo ordenar recursos
En esta lección veremos cómo ordenar recursos de forma ascendente y descendente adhiriéndose a la especificación JSON:API.
PRO
07:2565. Cómo ordenar recursos - Parte 2
En esta lección terminamos la implementación de ordenar recursos y lo extraemos a un Trait que podamos reutilizar en cualquier modelo.
PRO
13:4866. Cómo paginar recursos según la especificación JSON:API
En 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
10:0667. Cómo utilizar Macros y Mixins en Laravel
En esta lección reestructuramos la paginación y el orden artículos en macros y mixins para poder reutilizarlos en diferentes modelos.
PRO
10:1568. Cómo filtrar recursos
En esta lección implementamos varios filtros para artículos siguiendo la especificación JSON:API.
PRO
09:3569. Cómo implementar Filtros utilizando Scopes de Eloquent
En esta lección aprendemos a transformar los parámetros que recibimos de la url, en scopes de Eloquent que nos permitan modificar las consultas a la base de datos.
PRO
15:1970. Cómo permitir búsqueda de recursos
En esta lección aprendemos a implementar un filtro de búsqueda siguiendo la especificación JSON:API
PRO
10:5771. Instalación y configuración del paquete Laravel Json API
En esta lección vemos cómo instalar y configurar el paquete Laravel Json API que nos ayudará a acelerar el proceso de creación de una API adherida a la especificación JSON:API con Laravel.
PRO
16:1172. Entendiendo los Schemas, Adapters y Validators
En esta lección aprendemos qué son y cómo utilizar los Schemas, Adapters y Validators del paquete Laravel Json Api, utilizando el recurso articles.
PRO
06:1173. Cómo crear recursos siguiendo la especificación JSON:API
En esta lección aprendemos a crear recursos siguiendo la especificación JSON:API y cómo probar las reglas de validación.
PRO
07:2874. Implementando la autenticación API
En esta lección implementamos la autenticación API y relacionamos automáticamente al usuario autenticado con el artículo al momento de su creación.
PRO
13:3275. Utilizando el slug como identificador de los artículos
En esta lección creamos una regla de validación personalizada que verifique que los slugs se almacenen en el formato correcto en la base de datos y así poderlos utilizar como identificadores y en las urls.
PRO
05:0276. Cómo actualizar recursos siguiendo la especificación JSON:API
En esta lección verificamos mediante tests que solo los usuarios autenticados puedan actualizar artículos y solucionamos el problema de validación del slug único.
PRO
04:5377. Qué son y cómo utilizar Authorizers
En esta lección utilizamos Authorizers para verificar que los usuario sólo pueden editar los artículos que ellos mismos han escrito.
PRO
03:5278. Cómo eliminar recursos siguiendo la especificación JSON:API
En esta lección permitimos que sólo los usuarios autenticados puedan eliminar sus artículos y que no puedan eliminar artículos de otros.
PRO
06:3879. Cuándo utilizar los códigos de estado HTTP 401 y 403
En esta lección reestructuramos el archivo de rutas api y aprendemos cuándo utilizar el código de respuesta HTTP 401 y 403 y qué representa cada uno.
PRO
05:1680. Definiendo el recurso de los autores de artículos
En esta lección repasaremos el proceso de definir de un recurso API implementando el recurso authors, que internamente apuntará al modelo User que ya tenemos.
PRO
07:1781. Qué son UUIDs y cómo utilizarlos en modelos de Eloquent
En esta lección implementamos UUIDs V4 en el modelo Author para utilizarlo como identificador en nuestra API
PRO
06:0782. Cómo incluir relaciones siguiendo la especificación JSON:API
En esta lección habilitamos la inclusión de autores relacionados con los artículos, y así poder pre-cargarlos cada vez que los necesitemos
PRO
04:0583. Links para obtener y modificar relaciones - Parte 1
En esta lección modificamos la respuesta de los artículos para agregar los links de la relación con los autores, como lo indica la especificación JSON:API
PRO
05:4384. Links para obtener y modificar relaciones - Parte 2
En esta lección hacemos funcionar los links de la relación con los autores para que en uno nos devuelva el objeto recurso y el otro el objeto identificador de recurso.
PRO
04:0085. Cómo evitar que se modifiquen las relaciones
En esta lección evitamos que cualquier usuario pueda cambiar el autor de un artículo. También revisamos por qué algunos tests fallan eventualmente.
FREE
03:5786. Cómo actualizar tu aplicación a Laravel 8
En esta lección actualizamos paso a paso nuestra API de la versión 7 a la versión 8 de Laravel.
FREE
08:3287. Actualizando los factories
En este video continuamos con la actualización a Laravel 8 actualizando los factories y los seeders a la nueva versión.
PRO
03:2788. Mostrando el listado de categorías
En esta lección, mediante tests, habilitamos las rutas index para ver el listado de categorías y la ruta read, o show, para ver una categoría específica.
FREE
07:0289. Crear, actualizar y eliminar categorías
En esta lección habilitamos los endpoints para la creación, actualización y eliminación de categorías en nuestra API, como siempre, adhiriéndose a la especificación JSON:API
PRO
10:5990. Incluyendo relaciones entre artículos, autores y categorias
En esta lección permitimos que desde el recurso articles se pueda incluir su categoría y autor asociados y desde el recurso categories se puedan incluir todos sus artículos relacionados.
PRO
05:1291. Cómo filtrar recursos por sus relaciones
En esta lección permitimos filtrar artículos por una o varias categorías utilizando filtros, y siguiendo la especificación JSON:API.
PRO
07:4192. Reglas de validación para las relaciones
En esta lección implementamos el envío y almacenamiento de la relación con las categorías al momento de crear o actualizar un artículo.
PRO
04:1093. Protegiendo la API contra asignación masiva
En esta lección corregimos el problema de asignación masiva que tenemos actualmente en el recurso articles.
PRO
11:3194. Reestructuración de la lógica relacionada con el autor y sus artículos
En esta lección vamos a extraer la lógica de adjuntar el usuario autenticado al artículo, ya que a futuro, es probable que queramos que un usuario administrador por ejemplo, cree artículos en nombre de otro usuario, pues, con la implementación actual no podemos hacerlo, así que vamos a reestructurar.
FREE
09:1095. Qué son Token Abilities o Scopes en una API con Laravel Sanctum
En esta lección vamos a aprender qué son las habilidades de tokens o scopes como se lo conoce en OAuth, y cómo aplicarlas y verificarlas con Laravel Sanctum.
PRO
05:4296. Permisos API para crear artículos
En esta lección vamos a implementar los permisos de tokens para que sólo los tokens autorizados puedan crear artículos.
PRO
05:1997. Permisos de token para actualizar y eliminar artículos vía API
En esta lección implementamos los permisos para que sólo usuarios con ciertos permisos puedan editar y eliminar artículos. También vemos cómo utilizar un permiso de administrador que no tenga restricciones..
PRO
07:3698. Permisos para modificar relaciones
En esta lección implementamos un método específico en la política de acceso que se encargará de verificar los permisos para modificar relaciones.
PRO
13:4099. Autenticación API para aplicaciones móviles
En esta lección explicamos e implementamos la autenticación para aplicaciones móviles en nuestra API con Laravel.
PRO
08:21100. Autenticación API para aplicaciones móviles | Parte 2
En esta lección implementamos el cierre de sesión (invalidar token), y aprendemos a utilizar el guard Sanctum en los middlewares de autenticación.
PRO
07:43101. Registro de usuarios vía API
En esta lección implementamos y testeamos el endpoint de la API que permita el registro de usuarios.
PRO
04:09102. Obteniendo el usuario autenticado con Laravel Sanctum
En esta lección testeamos e implementamos la ruta que nos devuelva el usuario autenticado vía Laravel Sanctum
PRO
08:04103. Creando un sistema simple de permisos en base de datos
En esta lección creamos un modelo para los permisos que podamos asociar a los usuarios de nuestra API
PRO
04:36104. Utilizando los permisos como habilidades de token API
En esta lección implementamos la asignación automática de permisos de usuario a habilidades de token (Sanctum) al momento de hacer login vía API
PRO
08:51105. Comando de artisan para generar los permisos de cada recurso API
En esta lección vamos a crear un comando de artisan que nos genere automáticamente los permisos de cada recurso.
FREE
00:54106. Cómo ejecutar tests en paralelo (parallel testing) en Laravel
En este video vemos cómo aprovechar una nueva característica de Laravel v8, los tests en paralelo, que incrementan en un 75% (aprox) la velocidad de ejecución de los tests.
PRO
05:37107. Comando para generar datos de prueba en la API
En esta lección creamos un comando que nos llene la base de datos para posteriormente realizar pruebas manuales con Postman, y al ser un comando destructivo agregamos una advertencia para prevenir que se ejecute en producción
FREE
08:08108. Cómo utilizar Postman para probar una API hecha con Laravel
En esta lección utilizamos Postman para probar el listado, creación, actualización y eliminación del recurso articles
PRO
03:53109. Cómo crear y utilizar variables de entorno en Postman
En esta lección utilizamos variables de entorno para evitar repetir los mismos datos una y otra vez en las peticiones de Postman.
PRO
06:48110. Cómo utilizar parámetros de URL en Postman
En esta lección utilizamos parámetros para verificar y guardar cada uno de los filtros disponibles en el recurso Articles de la API hecha con Laravel.
PRO
05:37111. Cómo utilizar parámetros de URL en Postman - Parte 2
En esta lección vamos a probar la paginación, el ordenamiento de registros, la inclusión de relaciones y sparse fieldset en Postman.
PRO
07:42112. Cómo generar la documentación de una API con Postman
En esta lección probamos el login, logout, registro y usuario autenticado, listamos los token scopes, y generamos la documentación de la API con Postman.
PRO
06:22113. Cómo consumir una API adherida a la especificación JSON:API con Vue 3
En esta lección creamos una app con Vue.js 3 para demostrar una forma sencilla de consumir los datos de la API JSON:API hecha con Laravel
PRO
09:57114. Cómo autenticar un SPA (Vue 3) utilizando Sanctum y Fortify
En esta lección configuramos Sanctum e instalamos Fortify para ayudarnos con la autenticación SPA via cookies desde la aplicación de Vue 3
PRO
06:39115. Cómo obtener el usuario autenticado con Sanctum con Vue 3
En esta lección obtenemos el usuario autenticado y creamos el botón para cerrar sesión
PRO
10:46116. Cómo crear registros desde Vue 3 siguiendo la especificación JSON:API
En esta lección aprendemos a construir y enviar fácilmente el objeto JSON:API del recurso articles con sus respectivas relaciones: categoría y usuario actualmente autenticado.
FREE
04:16117. Cómo generar slugs en tiempo real con Vue.js
En esta última lección aprendemos a generar, del lado del cliente (Vue.js 3), un slug a partir del título del artículo de forma autmática.