Recursos de API (API Resources) en Laravel




Recursos de API (API Resources) en Laravel

Los recursos de API en Laravel permiten transformar tus modelos y colecciones de modelos en respuestas JSON de manera sencilla y expresiva. Esto es útil para controlar la estructura y el formato de las respuestas de tu API, asegurando que los datos se presenten de manera consistente y organizada. Los recursos de API son una herramienta poderosa para construir APIs robustas y mantenibles.

Conceptos clave

  • Transformación de datos: Los recursos de API transforman los datos del modelo en un formato JSON específico.
  • Colecciones de recursos: Permiten transformar múltiples modelos en una colección JSON.
  • Personalización de respuestas: Puedes personalizar la estructura y el contenido de las respuestas JSON.
  • Atributos condicionales: Permiten incluir o excluir atributos basados en condiciones.

Laravel proporciona un sistema de recursos de API flexible y fácil de usar, permitiendo a los desarrolladores crear APIs que cumplen con los requisitos específicos de sus aplicaciones.


Ejemplo de recurso de API

                // Generar un recurso de API
                php artisan make:resource ProductoResource

                // app/Http/Resources/ProductoResource.php

                namespace App\Http\Resources;

                use Illuminate\Http\Resources\Json\JsonResource;

                class ProductoResource extends JsonResource {
                    public function toArray($request) {
                        return [
                            'id' => $this->id,
                            'nombre' => $this->nombre,
                            'descripcion' => $this->descripcion,
                            'precio' => $this->precio,
                            'stock' => $this->when($request->user() && $request->user()->isAdmin(), $this->stock),
                        ];
                    }
                }

                // Usar el recurso en un controlador

                use App\Http\Resources\ProductoResource;
                use App\Models\Producto;

                public function show(Producto $producto) {
                    return new ProductoResource($producto);
                }
            



Publicar un comentario

0 Comentarios