Desarrollo de una API con Laravel

Desarrollo de una API con Laravel

0%
97 lecciones 10h 14m 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

Introducción al curso Desarrollo de una API con Laravel
FREE
03:25

1. 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.
Qué es una API REST
FREE
11:02

2. 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.
Qué es la especificación JSON:API
FREE
11:18

3. 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

Cómo crear el esquema de bases de datos en Laravel con Blueprint
PRO
04:37

4. 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
Implementación de la ruta para obtener artículos individuales
PRO
08:01

5. 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
Implementando la ruta para obtener todos los artículos
PRO
07:04

6. 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.
Implementando la ruta para crear artículos
PRO
08:39

7. 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
Middleware para verificar los headers JSON:API
PRO
10:04

8. 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.
Cómo modificar las peticiones HTTP en los TEST
PRO
05:06

9. 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.
Probando errores de validación en formato JSON
PRO
03:04

10. Probando errores de validación en formato JSON

En esta lección aprendemos a testear los errores de validación en nuestra API.
Cómo formatear los errores según la especificación JSON:API
PRO
06:48

11. 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.
Extendiendo la clase TestResponse utilizando macros
PRO
08:31

12. 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
Validando el documento JSON:API
PRO
12:13

13. 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
Cómo modificar los errores de validación en Laravel
PRO
03:29

14. 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
Automatizando la creación del Documento JSON:API
PRO
06:36

15. 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.
Actualización de recursos siguiendo la especificación JSON:API
PRO
09:32

16. 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.
Eliminación de recursos siguiendo la especificación JSON:API
PRO
05:07

17. 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.
Validación avanzada del slug
PRO
15:41

18. 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.
Cómo ordenar registros con Eloquent
PRO
06:26

19. 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.
Cómo ordenar registros por múltiples parámetros en Laravel
PRO
06:13

20. 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.
Extendiendo el Query Builder con macros
PRO
04:49

21. 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
Implementando la paginación JSON:API
PRO
10:46

22. 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
Reorganizando Macros utilizando Mixins
PRO
06:01

23. Reorganizando Macros utilizando Mixins

En esta lección utilizamos mixins para reorganizar los macros que permiten ordenar y paginar registros.
Cómo filtrar recursos siguiendo la especificación JSON:API
PRO
09:43

24. 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.
Utilizando Query Scopes como Filtros
PRO
08:03

25. 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.
Cómo solicitar campos específicos de un recurso (Sparse Fieldset)
PRO
08:18

26. 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
Sparse Fieldset en la ruta detalle
PRO
04:30

27. 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.
Restructurando el Laravel Resource
PRO
11:16

28. 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.
Simplificando la verificación de recursos JSON:API
PRO
06:08

29. 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
Implementando el recurso para las categorías
PRO
09:27

30. 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.
Creando un constructor de documentos JSON:API
PRO
10:42

31. 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.
Cómo utilizar MOCKS dentro de tests unitarios
PRO
06:00

32. 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.
Creando un recurso con sus relaciones
PRO
07:33

33. 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
Cómo validar relaciones
PRO
04:33

34. 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.
Generando los links de relaciones (Relationship Links)
PRO
08:05

35. 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
Habilitando el query include
PRO
04:32

36. 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'
Incluir relaciones de múltiples recursos
PRO
03:49

37. 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.
Carga condicional de relaciones
PRO
05:00

38. Carga condicional de relaciones

En esta lección evitamos que se ejecuten consultas SQL adicionales (N+1) por cada relación de recurso solicitada.
Validación de includes
PRO
03:51

39. Validación de includes

En esta lección modificamos la implementación para solo procesar los includes que hayamos definido con anterioridad.
Filtrar recursos por sus relaciones
PRO
05:06

40. 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
Implementando el recurso para los autores
PRO
03:21

41. 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.
Cómo utilizar UUIDs como llave primaria en Eloquent
PRO
05:00

42. 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.
Relacionando el artículo con su autor
PRO
07:16

43. 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.
Implementando Include y links del autor
PRO
04:53

44. 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.
Implementando los links de relaciones
PRO
06:43

45. 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
Implementando los links de relaciones - Parte 2
PRO
06:00

46. Implementando los links de relaciones - Parte 2

En esta lección implementamos las rutas específicas para modificar las relaciones
Validación de los links de relaciones
PRO
02:43

47. 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
Actualizando la API a Laravel 9
PRO
02:41

48. 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.
Cómo interceptar las excepciones HTTP en Laravel
PRO
03:33

49. 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
Custom assertion para verificar errores JSON:API
PRO
02:52

50. 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
Cómo crear excepciones personalizadas en Laravel
PRO
04:30

51. 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.
Interceptando el error 400 en la API
PRO
06:02

52. 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
Qué son y cómo funcionan los tokens en Laravel Sanctum
PRO
09:10

53. 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.
Cómo generar tokens de acceso con Laravel Sanctum
PRO
06:02

54. 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.
Validando la generación de tokens de acceso
PRO
05:45

55. 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.
Protegiendo las rutas API con Sanctum en Laravel 9
PRO
04:59

56. 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.
Interceptando el error de autenticación
PRO
02:05

57. 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.
Políticas de acceso para proteger la API
PRO
07:27

58. 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.
Habilidades de Token dentro de Políticas de Acceso
PRO
04:14

59. 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.
Sistema de permisos para la API
PRO
06:48

60. 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.
Permisos de usuario como habilidades de token
PRO
03:57

61. 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.
Implementando el logout en la API
PRO
07:02

62. Implementando el logout en la API

En esta lección veremos cómo eliminar los tokens de acceso del usuario actualmente autenticado.
Implementando el registro en la API
PRO
08:59

63. Implementando el registro en la API

En esta lección veremos cómo registrar usuarios y validar la petición utilizando TDD.
Reestructurando los Test Helpers
PRO
10:27

64. Reestructurando los Test Helpers

En esta lección mejoramos los Test Helpers para que sean más dinámicos y reutilizables.
Reestructurando el From Request
PRO
04:54

65. Reestructurando el From Request

En esta lección movemos la lógica de guardar artículos fuera del Form Request dentro del Article Controller.
Json API Request Mixins
PRO
07:56

66. Json API Request Mixins

En esta lección agregamos varios métodos a la clase Request de Laravel para interactuar con el document JSON:API de forma sencilla.
Laravel Pint y tests en paralelo
PRO
07:21

67. Laravel Pint y tests en paralelo

En esta lección instalamos y configuramos Pint para dar formato a nuestro código y habilitamos los tests en paralelo.
Implementando el listado de comentarios
PRO
07:51

68. Implementando el listado de comentarios

En esta lección comenzamos la implementación del recurso comments utilizando TDD.
Implementando la creación de comentarios en la API
PRO
09:38

69. Implementando la creación de comentarios en la API

En esta lección utilizamos TDD para implementar la habilidad de los usuarios de dejar comentarios en cada artículo.
Validación de comentarios en la API
PRO
05:44

70. Validación de comentarios en la API

En esta lección utilizamos TDD para implementar la validación de los comentarios.
Edición de comentarios en la API
PRO
10:20

71. Edición de comentarios en la API

En 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.
Eliminación de comentarios a través de la API
PRO
02:49

72. Eliminación de comentarios a través de la API

En esta lección utilizamos TDD para implementar la eliminación de usuarios previa autorización utilizando políticas de acceso.
Relación entre comentarios y artículos
PRO
07:40

73. Relación entre comentarios y artículos

En esta lección implementamos las rutas para obtener el identificador y los atributos del artículo relacionado a cada comentario.
Reestructurando el archivo de rutas API
PRO
05:32

74. Reestructurando el archivo de rutas API

En 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.
Relaciones entre comentarios y autores
PRO
06:08

75. Relaciones entre comentarios y autores

En esta lección implementamos las rutas necesarias para relacionar los comentarios con sus respectivos autores.
Relaciones de uno a muchos siguiendo la especificación JSON:API
PRO
08:01

76. Relaciones de uno a muchos siguiendo la especificación JSON:API

En esta lección definimos la url para obtener múltiples identificadores de comentarios asociados a un artículo.
Identificadores de recursos vacíos
PRO
03:07

77. Identificadores de recursos vacíos

En esta lección evitamos que la petición falle cuando intentamos obtener los comentarios de un artículo que no los tiene.
Múltiples recursos relacionados
PRO
02:50

78. Múltiples recursos relacionados

En esta lección definimos el endpoint para obtener todos los comentarios de un artículo específico.
Actualizar comentarios de un artículo
PRO
07:33

79. Actualizar comentarios de un artículo

En 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.
Validando la relación contra la base de datos
PRO
01:35

80. Validando la relación contra la base de datos

En esta lección agregamos un test que verifique que los comentarios que enviemos para su actualización, existan en la base de datos.
Incluir relaciones de uno a muchos (one to many)
PRO
07:34

81. Incluir relaciones de uno a muchos (one to many)

En 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.
Incluir relaciones de muchos a muchos (many to many)
PRO
03:11

82. Incluir relaciones de muchos a muchos (many to many)

En esta lección implementamos el parámetro `include` con el valor `comments` en la ruta index de los artículos.
Comment Relationship links
PRO
01:06

83. Comment Relationship links

En esta lección implementamos los links de relaciones en la respuesta cuando accedemos a la ruta de los comentarios.
Cómo actualizar Laravel 9 a Laravel 10
PRO
04:46

84. Cómo actualizar Laravel 9 a Laravel 10

En esta lección actualizamos la API (y sus dependencias) paso a paso, hasta llevarla a la versión 10 de Laravel.
Mejora en el formateo de errores
PRO
07:27

85. Mejora en el formateo de errores

En esta lección personalizamos el mensaje de error 404 dependiendo si existe o no un modelo.
Extendiendo la clase Request de Laravel
PRO
03:15

86. Extendiendo la clase Request de Laravel

En esta lección agregamos 2 nuevos métodos al facade Request para obtener el TYPE y el ID del recurso solicitado.
Error de Laravel por defecto fuera del prefijo 'api'
PRO
03:50

87. Error de Laravel por defecto fuera del prefijo 'api'

En esta lección nos aseguramos que los errores JSON:API ocurran únicamente en las peticiones que estén dentro del prefijo 'api'
Capturando todas las excepciones HTTP
FREE
09:09

88. Capturando todas las excepciones HTTP

En esta lección creamos una excepción genérica que modifique todos los errores HTTP y los convierta en errores JSON:API
Agrupando las clases relacionadas a la especificación JSON:API
FREE
05:04

89. Agrupando las clases relacionadas a la especificación JSON:API

En 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.
Comando de Artisan para generar datos de prueba en la API
PRO
05:50

90. Comando de Artisan para generar datos de prueba en la API

En esta lección creamos un comando de artisan que nos permita rápidamente crear datos de prueba para utilizar en POSTMAN
Testeando la JSON:API con Postman
FREE
11:50

91. Testeando la JSON:API con Postman

En esta lección agregamos las peticiones en POSTMAN y solucionamos algunos errores que tenemos actualmente en nuestra API.
Variables en Postman
FREE
05:47

92. Variables en Postman

En 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.
Probando los filtros de la API con Postman
FREE
08:33

93. Probando los filtros de la API con Postman

En esta lección agregamos una petición con ejemplos en Postman para filtrar los artículos por fecha, categorías, autor y demás.
Probando la inclusión de relaciones con Postman
FREE
03:20

94. Probando la inclusión de relaciones con Postman

En 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.
Probando el parámetro sort en Postman
FREE
03:42

95. Probando el parámetro sort en Postman

En esta lección probamos el ordenamiento de artículos por titulo, contenido y fecha utilizando Postman.
Sparse Fieldset en Postman
PRO
01:52

96. Sparse Fieldset en Postman

En esta lección utilizamos el parámetro field para indicarle a la API qué atributos queremos recibir en la respuesta.
Probando la autenticación con Postman
FREE
05:44

97. Probando la autenticación con Postman

En esta lección agregamos las peticiones para hacer login, logout, registro y también para obtener al usuario "autenticado" en la API.

Otros cursos que te pueden interesar

Laravel desde ceroDesarrollo Full-Stack con Laravel, Next.js y Digital OceanFundamentos de Tailwind CSSFundamentos de Laravel 9Aprende Laravel Livewire desde ceroDesarrollo de una API con LaravelAprende Laravel IntermedioDesarrollo de paquetes para Laravel & PHPAprende Laravel desde ceroConstruyendo un SPA con Vue.js & LaravelMastering AuthenticationDesarrollo de un blog con manejo de roles y permisosNotificaciones