DEV Community

Denis Augusto
Denis Augusto

Posted on

Inertia matou a API REST do seu projeto Laravel (e talvez tenha feito um favor)

Parte 3 de 3 desta série sobre camada de view no Laravel. Na parte 1: Blade. Na parte 2: Livewire. Aqui, fechando: Inertia.

Você já construiu uma API REST só pro seu próprio front-end consumir?

Deixa eu descrever uma cena que talvez você reconheça.

Você queria usar Vue (ou React) no front. Aí montou uma API no Laravel: rotas /api, controllers devolvendo JSON, Sanctum pra autenticar, resources pra formatar. Do outro lado, um projeto SPA separado consumindo tudo isso com axios, gerenciando token, tratando 401, montando estado.

E o detalhe engraçado: essa API só tem um cliente. O seu próprio front-end. Você construiu um contrato público completo pra conversar consigo mesmo.

O Inertia olha pra essa cena e pergunta: "e se a gente pulasse a API inteira?".

O que o Inertia faz (e por que confunde tanta gente)

O Inertia não é um framework. É uma ponte. Ele deixa seu controller Laravel devolver um componente Vue/React — passando os dados direto como props, sem API no meio.

public function index()
{
    return Inertia::render('Produtos/Index', [
        'produtos' => Produto::paginate(10),
    ]);
}
Enter fullscreen mode Exit fullscreen mode

Do lado do front, isso chega como props no seu componente:

export default function Index({ produtos }) {
    return <ProductTable data={produtos} />;
}
Enter fullscreen mode Exit fullscreen mode

Repara no que não tem aí: nenhuma rota /api, nenhum axios.get, nenhum resource montando JSON na mão, nenhum token pra gerenciar. A primeira carga vem como HTML normal; as navegações seguintes o Inertia troca via XHR, recebendo só as props novas. Você tem React/Vue de verdade, mas continua roteando e autenticando como um app Laravel comum — com web middleware, sessão e tudo.

É por isso que ele confunde: não é Blade (tem front component de verdade) e não é SPA clássica (não tem API). É o meio-termo — e o meio-termo sempre gera "peraí, mas então o que é isso?".

Onde o Inertia é a escolha certa

  • App interno rico em interatividade feito por um time que curte e domina Vue/React.
  • Você quer componentes de front de verdade (ecossistema, libs, reatividade), mas não quer manter uma API separada só pra si mesmo.
  • Um único cliente: o front é o web, e só ele. Sem app mobile, sem parceiro externo consumindo os mesmos dados.

Nesse cenário, o Inertia te dá o melhor dos dois mundos: a produtividade de "controller que devolve view" com o poder de um front-end moderno. E te devolve um monte de tempo que ia embora mantendo API que ninguém além de você usa.

Onde ele NÃO serve (e essa é a pegadinha)

Aqui está a armadilha que morde no futuro: Inertia não é uma API. As props que ele manda não são um contrato pensado pra ser consumido por qualquer coisa — são pra aquele componente, naquela tela, naquele momento.

Então, se amanhã aparecer um app mobile, um parceiro que precisa integrar, um webhook, um segundo front-end... o Inertia não te ajuda. Você vai precisar construir a API REST de verdade, do zero, do lado.

Ou seja, a escolha não é "Inertia é melhor que API". É: você tem mais de um cliente pros seus dados? Se sim, a API paga o próprio custo e o Inertia não substitui ela. Se não, a API era cerimônia e o Inertia te livrou dela.

Fechando a série: qual é o seu caso?

Depois de três posts, dá pra resumir a decisão numa régua honesta:

  • Blade — a tela é conteúdo, formulário e link. SEO importa. Simplicidade acima de tudo. Comece aqui.
  • Livewire — precisa de reatividade, o time é backend-heavy e não quer JS. CRUD e painel interno. Sobe pra cá quando o Blade + Alpine não dá conta.
  • Inertia — quer componentes React/Vue de verdade, o time domina JS, e o web é o único cliente dos dados. Vai pra cá quando a interatividade é o coração do produto.

Não existe "o melhor". Existe o certo pro seu contexto — e o erro caro é escolher por hype, não por necessidade.

Antes de você fechar a aba

Pergunta final da série: aquela API REST do seu último projeto Laravel — quantos clientes ela realmente tem além do seu próprio front-end?

Se a resposta foi "só ele mesmo", talvez o Inertia (ou até o Livewire) tivesse te poupado semanas. Cai nos comentários e me conta qual das três é a sua stack de view — e se você concorda com a régua aí de cima. 🔥

E se essa série te ajudou a organizar a cabeça, me segue: eu escrevo Laravel sem hype e sem firula toda semana.


Top comments (0)