Aula 10 - APIs REST com Laravel 🌐
🎯 Objetivo da Aula
Transformar sua aplicação Laravel em um backend poderoso para aplicações modernas (Mobile, SPA). Vamos aprender a criar endpoints JSON, usar API Resources para formatar respostas e entender o versionamento de APIs.
📡 O que é uma API REST?
REST é um conjunto de princípios que permite que sistemas diferentes se comuniquem via HTTP usando formatos padrão como JSON. No Laravel, as rotas de API ficam em routes/api.php e não possuem estado (stateless).
Sem Sessão
Diferente das rotas web, as rotas de API não usam cookies de sessão por padrão. Elas usam tokens (como JWT ou Sanctum).
📦 API Resources
Eles servem como uma camada de transformação entre seus Models do banco e a resposta JSON que o cliente recebe.
Criando um Resource
Formatando a Resposta
public function toArray(Request $request): array
{
return [
'id' => $this->id,
'nome_do_produto' => $this->nome,
'preco_formatado' => 'R$ ' . number_format($this->preco, 2, ',', '.'),
'links' => [
'self' => route('api.produtos.show', $this->id),
]
];
}
📊 Fluxo de uma Requisição API
graph LR
A[Cliente: Mobile/React] -->|GET /api/users| B[Laravel Router]
B --> C[UserController]
C --> D[Eloquent Model]
D --> E[API Resource]
E -->|JSON| A
🔄 Respostas HTTP e Status Codes
É fundamental retornar o código correto para que o cliente saiba o que aconteceu: - 200 OK: Sucesso. - 201 Created: Registro criado com sucesso. - 422 Unprocessable Entity: Erro de validação. - 401 Unauthorized: Falta de autenticação.
🧠 Blocos de Destaque
Versionamento
Sempre versione sua API (ex: /api/v1/produtos). Isso permite que você faça mudanças drásticas sem quebrar os aplicativos antigos dos usuários.
🛠️ Exercícios Progressivos
- Básico: Crie uma rota em
api.phpque retorne uma lista de nomes em formato JSON. - Intermediário: Crie um Resource para o model
Tarefae oculte campos sensíveis comopasswordoudeleted_at. - Desafio: Implemente o método
storeem um Controller de API que valide os dados e retorne o status201com o objeto criado.
🚀 Mini-Projeto da Aula
Catálogo Digital API: Desenvolva uma API para um catálogo de produtos. O projeto deve ter endpoints para listar produtos (filtrados por categoria), ver detalhes de um produto e criar novos produtos (protegido por um token simples). Use API Resources para garantir que a resposta JSON seja elegante e profissional.