CÓMO USAR JSON:API RESOURCES NATIVOS EN LARAVEL 13
Una de las mejoras más interesantes de Laravel 13 es el soporte de primera parte para recursos JSON:API. Hasta ahora, si se quería seguir el estándar JSON:API había dos opciones:- Construir manualmente la estructura de la respuesta.
- Depender de paquetes de terceros.
Antes
Se tenía que hacer algo como lo siguiente:public function index()
{
$posts = Post::with('user')->get();
return response()->json([
'data' => $posts
]);
}
Ahora
Con los nuevos JSON:API Resources queda así de limpio:use App\Http\Resources\PostResource;
public function index()
{
return PostResource::collection(
Post::with('user')->get()
);
}
{
"data": [
{
"type": "posts",
"id": "1",
"attributes": {
"title": "First Post"
},
"relationships": {
"user": {
"data": { "type": "users", "id": "1" }
}
}
}
],
"included": [
{
"type": "users",
"id": "1",
"attributes": { "name": "Umar" }
}
]
}
¿Por qué es tan útil?
- Basado en estándares → Sigue la especificación oficial de JSON:API.
- Código más limpio → Adiós al formateo manual y a paquetes externos.
- Mejores relaciones → Incluye relaciones de forma nativa y limpia.
- Amigable para desarrolladores → Expresivo, simple y ahora integrado en el core de Laravel.