Contenido del curso
Creación del proyecto
Planificación y mantenimiento
- 8

Planificación de rutas REST en Laravel
06:08 min - 9

Recursos y colecciones en Laravel API
12:59 min - 10

Recursos anidados en Laravel API
Viendo ahora - 11

Cómo reducir 932 consultas con Telescope
10:54 min - 12

CRUD de Recetas con Laravel y Symfony en Visual Studio Code
16:21 min - 13

Validación de Datos en Aplicaciones Web con Laravel
11:24 min
Funciones de seguridad
- 14

Autenticación vs. autorización
03:19 min - 15

Proteger rutas de API con Sanctum
09:27 min - 16

Ruta de login y tokens con Sanctum
12:32 min - 17

Corrección de bugs de seguridad en aplicaciones web
08:02 min - 18

Políticas de acceso en Laravel con Artisan
07:27 min - 19

Upload e validação de imagens em Laravel
07:56 min - 20

Qué es autenticación en la web
03:54 min
API Testing
API Breaking Changes
Conclusiones
Recursos anidados en Laravel API
Resumen
Trabajar con recursos anidados en Laravel te permite mantener una API consistente cuando una entidad contiene a otra. Aquí aprendes a configurar etiquetas y recetas como recursos multinivel para que cada respuesta JSON siga el mismo estándar, sin importar desde qué ruta se consulte.
Cómo configurar el recurso de etiquetas en Laravel
El primer paso es generar los recursos faltantes desde la terminal con Artisan. La estructura de una etiqueta es similar a la de una categoría, así que puedes reutilizar el patrón.
Desde la consola ejecutas el comando para crear ambos recursos:
php artisan make:resource EtiquetaRecurso.php artisan make:resource RecetaRecurso.
Dentro del recurso de etiqueta defines tres bloques: el id, el type con valor etiqueta y los attributes que incluyen el nombre. Después agregas la relación, porque una etiqueta tiene muchas recetas asociadas.
¿Qué es un recurso en Laravel? Es una clase que transforma un modelo Eloquent en una respuesta JSON estructurada. Te permite controlar exactamente qué campos expones y cómo se llaman, sin filtrar datos sensibles del modelo original.
Cómo usar el recurso en el controlador de etiquetas
En el controlador defines dos retornos según el caso. Para una sola etiqueta usas new EtiquetaRecurso($etiqueta) y para varias aplicas EtiquetaRecurso::collection($etiquetas).
Esta técnica reutiliza la misma configuración del recurso, a diferencia del enfoque visto con categorías donde se ajustaba el comportamiento. Si quieres uniformidad, la colección estática es el camino directo.
Qué atributos lleva el recurso de receta
La receta concentra más información que una etiqueta, por eso necesita un mapeo cuidadoso de campos y relaciones. Aquí no defines una relación inversa, sino que aprovechas las que ya existen para extraer datos puntuales.
Los atributos que incluyes en el recurso de receta son:
- Categoría, accediendo al nombre mediante
$this->category->name. - Autor, obteniendo el
usernamedesde la relación con el usuario. - Título, descripción, ingredientes e instrucción.
- Imagen.
- Etiquetas, transformadas con métodos de colección.
Organizar muchos campos en líneas separadas mejora la legibilidad del recurso, sobre todo cuando un modelo crece en atributos.
Cómo transformar etiquetas en un string separado por comas
En lugar de devolver el array completo de etiquetas, puedes encadenar dos métodos para entregar un string limpio. Primero usas pluck('name') para extraer solo el nombre de cada etiqueta, y luego implode(',') para convertir ese array en una cadena separada por comas.
El resultado final es algo como etiqueta1,etiqueta2,etiqueta3, ideal cuando el frontend espera un texto plano en vez de una estructura compleja.
¿Para qué sirve pluck en Laravel? Es un método de colecciones que extrae los valores de una sola columna o atributo, devolviendo un array simple. Es útil cuando solo necesitas una propiedad específica de varios registros.
Por qué usar recursos anidados o multinivel en una API
El problema aparece cuando consultas una categoría y sus recetas se devuelven con un formato distinto al que entrega el endpoint de recetas. Esa inconsistencia rompe el contrato de la API y obliga al cliente a manejar variantes innecesarias.
La solución es invocar el recurso ya definido dentro de otro recurso. En vez de mapear las recetas manualmente dentro de la categoría o la etiqueta, escribes RecetaRecurso::collection($this->recetas). Así cada receta se comporta igual, sin importar desde qué ruta se llame.
Esto es lo que aporta el patrón de recursos anidados:
- Estabilidad en la estructura de respuesta.
- Consistencia entre endpoints relacionados.
- Coherencia visual y lógica al consumir la API.
- Reutilización del mismo recurso desde múltiples controladores.
Cómo verificar que la configuración funciona
Al consultar una etiqueta individual, la respuesta incluye id, type, attributes y dentro de las relaciones aparecen las recetas, cada una con su propio bloque de id, type y attributes. El mismo formato se repite al pedir el listado completo de etiquetas o al entrar por la ruta de categorías.
Esa repetición no es casualidad, es el resultado de aislar la configuración del recurso en un solo archivo y consumirlo desde donde haga falta. Cuando cambies un campo, lo cambias una vez y se refleja en toda la API.
¿Cuándo conviene anidar recursos en Laravel? Cuando un modelo se expone tanto de forma directa como dentro de otra entidad relacionada. Anidar recursos garantiza que el JSON sea idéntico en ambos casos y reduce duplicación de código.
Prueba esta configuración en tu propio proyecto, ajusta los atributos según tu modelo de datos y deja cualquier duda en los comentarios.