Colecciones de API en Laravel




Coleções de API em Laravel

As coleções de API em Laravel permitem transformar conjuntos de modelos em respostas JSON formatadas e personalizadas. Elas são úteis para lidar com listas de dados, como resultados de consultas de banco de dados, e para garantir que as respostas da sua API sejam consistentes e fáceis de usar. As coleções de API simplificam a manipulação e formatação de dados em massa.

Conceitos chave

  • Transformação de múltiplos modelos: As coleções de API transformam uma lista de modelos em um array JSON.
  • Personalização da resposta: Permitem definir a estrutura e os atributos da resposta JSON.
  • Paginação: As coleções de API suportam paginação para lidar com grandes conjuntos de dados.
  • Atributos condicionais: Permitem incluir ou excluir atributos com base em condições.

Laravel fornece um sistema de coleções de API flexível e poderoso, facilitando a criação de APIs que retornam listas de dados de maneira eficiente e organizada.


Exemplo de coleção de API

                // Gerar uma coleção de API
                php artisan make:resource ProductoCollection

                // app/Http/Resources/ProductoCollection.php

                namespace App\Http\Resources;

                use Illuminate\Http\Resources\Json\ResourceCollection;

                class ProductoCollection extends ResourceCollection {
                    public function toArray($request) {
                        return [
                            'data' => $this->collection->map(function ($producto) {
                                return [
                                    'id' => $producto->id,
                                    'nombre' => $producto->nombre,
                                    'precio' => $producto->precio,
                                ];
                            }),
                        ];
                    }
                }

                // Usar a coleção em um controlador

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

                public function index() {
                    return new ProductoCollection(Producto::all());
                }
            



Publicar un comentario

0 Comentarios