Pular para conteúdo

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

$ php artisan make:resource ProdutoResource

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

  1. Básico: Crie uma rota em api.php que retorne uma lista de nomes em formato JSON.
  2. Intermediário: Crie um Resource para o model Tarefa e oculte campos sensíveis como password ou deleted_at.
  3. Desafio: Implemente o método store em um Controller de API que valide os dados e retorne o status 201 com 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.


Próxima Aula: Segurança em Aplicações Web