Construindo um REST API com Lumen

Desenvolvi recentemente um API com Laravel para um mini-projecto de alguns amigos e trabalhei nele. Decidi construir outro API mas com Lumen, uma vez que é uma estrutura muito mais leve e rápida que Laravel.

Lumen é uma microestrutura construída em cima dos componentes principais de Laravel. O Lumen utiliza muitos conceitos familiares da Laravel como Eloquent, caching, routing, middleware e o seu contentor de serviço. Uma grande vantagem do Lumen é a sua velocidade, como resultado o framework é projetado para construir micro-serviços rápidos ou APIs.

Embora este tutorial seja sobre o Lumen, um simples entendimento de como o Laravel funciona é tudo o que você precisa seguir.

Existem várias formas de configurar o Lumen localmente. Para o bem deste tutorial, nós o faremos através de composer. Você pode conferir outras maneiras de configurar o Lumen aqui.
Do seu terminal, execute:
composer create-project — prefer-dist laravel/lumen lumen_api
Isto irá instalar o Lumen e todas as dependências para você no diretório lumen_api . A seguir, vamos renomear o arquivo.env.example localizado no diretório root para .env

O driver padrão do Lumen cache como em 5.4 é memcached, mas não vamos precisar disso para este tutorial. No entanto, qualquer um dos seguintes, array database e redis são suportados. Edite o arquivo .env e substitua o padrão CACHE_DRIVER e QUEUE_DRIVER pelos seguintes valores:

CACHE_DRIVER=array
QUEUE_DRIVER=database

Para servir nosso projeto localmente, podemos fazer uso do servidor do PHP construído executando o seguinte comando:
php -S localhost:8000 -t public

Visit localhost:8000 em seu navegador e você deve ver a seguinte página.

O que vamos construir

Estaremos construindo uma API REST simples que lê e atualiza as tarefas de Criar, Ler, Atualizar e Excluir para um arquivo product resource . Vamos dar uma olhada no nosso recurso endpoints

  • GET /product/{id} – Buscar todo o recurso do produto
  • POST /products- Criar um novo recurso do produto
  • GET /product/{id} – Buscar um recurso do produto por id
  • PUT /product/{id} – Atualizar um recurso do produto por id
  • DELETE /product/{id}- Apagar um recurso do produto por id

Base de dados e Migrações
Vamos criar o nosso ficheiro de migração. Execute o seguinte comando:
php artisan make:migration create_products_table

Isto irá criar um novo arquivo de migração para você no diretório database/migrations. Nosso product resource terá os seguintes atributos, name, price e description.

Adicionar o seguinte código ao arquivo de migração recém criado.

Editar .env com suas configurações database e então executar o seguinte comando para executar a migração.
php artisan migrate

Criar o nosso Modelo de Produto
Você já pode estar acostumado a criar os comandos models e controllers via artisan em Laravel, mas infelizmente o Lumen não suporta esses comandos. Para ver uma lista de comandos disponíveis artisan no Lumen, execute:
php artisan

Navigate para o diretório app e crie um novo model chamado Product.php

Unlike Laravel, Lumen não carrega inicialmente Eloquent e Facades. Para poder usá-las, temos que descomentar as seguintes linhas de código localizadas em app\bootstrap.php
$app->withFacades();

$app->withEloquent();

Métodos Controladores

Vamos criar o nosso controller. Navegue até o diretório app\Http\Controller e crie um arquivo ProductController.php. Adicione o seguinte código ao controller que acabou de criar.

  • index método retorna todos os produtos disponíveis como um JSON resposta.
  • create método cria um novo product e retorna o recém criado product como um JSON resposta.
  • show método retorna um único recurso de produto pelo seu id. Isto também é retornado como um JSON resposta.
  • update método atualiza um único recurso de produto pelo seu id também.
  • delete método elimina um recurso de produto pelo seu id e retorna um success mensagem.

Roteiros

É hora de finalmente adicionar o nosso routes. Abra o ficheiro web.php na pasta routes e adicione o seguinte código:

Definimos o nosso routes e adicionamos o prefix api/v1 uma vez que é um parâmetro comum partilhado por todos os nossos URIs

Tip: Faça uso do Prefixo para especificar parâmetros comuns para suas rotas agrupadas

Localizar nossa Base de Dados

Antes de começarmos a testar nosso endpoints, vamos criar alguns dados de amostra para trabalhar. Comecemos por criar o nosso seed. Execute:
php artisan make:seed ProductsTableSeeder
Isto irá criar um arquivo ProductsTableSeeder.php no diretório database/seeds. Edite o arquivo com o seguinte código:

Next, edite o arquivo DatabaseSeeder.php no diretório database\seeds com o seguinte código:
Estaremos fazendo uso da Fábrica de Modelos de Laravel e da Biblioteca Faker para gerar os dados de amostra. Navegue até o diretório database\factories e adicione o seguinte código ao arquivo ModelFactory.php.

Next, execute:
php artisan db:seed

Esta ação criará um monte de dados fictícios para nós no nosso database.

Testando nossa API

Estaremos fazendo uso do Postman para testar nossa API. Você pode ler mais sobre como começar com o Postman aqui.

Deixe uma resposta

O seu endereço de email não será publicado.