Cómo hacer que los recursos de la API sean más elegantes con los métodos fluidos de Laravel

  • Publicado el 12 mayo, 2025
  • Palabras: 230

¿Cansado de complicarte la vida para transformar tus modelos Eloquent en recursos de API? Los métodos de recursos fluidos de Laravel ofrecen un enfoque más elegante que hará que tu código sea más limpio e intuitivo.

Cómo hacer que los recursos de la API sean más elegantes con los métodos fluidos de Laravel

#Entendiendo el problema

Al crear API con Laravel, transformar los modelos de Eloquent en recursos es una tarea común. Tradicionalmente, esto se ha logrado encapsulando los modelos con clases de recursos:

 

UserResource::make(User::find(1));
UserResource::collection(User::query()->active()->paginate());

 

Si bien este enfoque funciona bien, crea una separación entre los modelos y el proceso de transformación. Primero se recupera el modelo y luego se encapsula en un paso aparte. Este proceso de dos pasos puede hacer que el código se sienta menos fluido y natural.

 

#La solución fluida Resource

Laravel ahora ofrece métodos fluidos directamente en los modelos y colecciones de Eloquent que agilizan este proceso:

 

User::find(1)->toResource(UserResource::class);
 
User::query()->active()->paginate()->toResourceCollection(UserResource::class);

 

Este enfoque crea un flujo más natural desde la recuperación del modelo hasta la transformación, y su código se lee de izquierda a derecha sin cambios de contexto mental.

 

#Recursos basados ​​en la convención

Llevando las cosas aún más lejos, Laravel puede adivinar automáticamente la clase de recurso basándose en las convenciones de nombres de modelos:

 

User::find(1)->toResource();

 

Al llamar a toResource() sin argumentos, Laravel buscará una clase de resource con el nombre de tu modelo. Si tu modelo es User, buscará UserResource. Este enfoque de convención sobre configuración reduce el código repetitivo y mantiene la claridad.

 

#Ejemplo práctico

Veamos un ejemplo práctico de cómo estos métodos fluidos mejoran el código de su controlador:

 

class UserController extends Controller
{
    public function show($id)
    {
        // Before:
        // return UserResource::make(User::findOrFail($id));
        
        // After:
        return User::findOrFail($id)->toResource();
    }
    
    public function index(Request $request)
    {
        $users = User::query()
            ->when($request->has('active'), fn($query) => $query->active())
            ->latest()
            ->paginate();
            
        // Before:
        // return UserResource::collection($users);
        
        // After:
        return $users->toResourceCollection();
    }
}

 

El enfoque fluido crea un flujo de código más natural que sigue nuestra forma de pensar sobre el problema: "Consígueme este usuario y transfórmalo en un recurso".

Antonio Jenaro
Antonio Jenaro

Web Developer

Archivado en:

Fuente: Harris Raftopoulos

Artículos relacionados

Cómo dominar la limitación de velocidad en Laravel: una navegación tranquila para su API y colas
219

Cómo dominar la limitación de velocidad en Laravel: una navegación tranquila para su API y colas

Optimización de tus rutas API en Laravel: el método apiResource
225

Optimización de tus rutas API en Laravel: el método apiResource

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión