Curso rápido de middleware no Next.js
Aprenda a usar o middleware do Next.js para melhorar a performance e a segurança das suas aplicações.

O middleware do Next.js permite executar código antes que uma solicitação seja finalizada e atualizar a resposta, oferecendo funcionalidades e performance aprimoradas.
Introduzido no Next.js v12, o middleware melhorou em versões subsequentes. A partir do Next.js v13, ele pode responder diretamente a solicitações, aprimorando a performance e segurança, e pode ser usado com as Edge Functions da Vercel.
O que é middleware no Next.js?
O middleware no Next.js é um código que permite executar ações antes que uma solicitação seja concluída, modificando a resposta conforme necessário. Ele oferece flexibilidade e controle sobre o fluxo de solicitações/respostas.
Escrevendo um middleware básico no Next.js
Para usar middleware, crie um arquivo chamado middleware.js
ou middleware.ts
no mesmo nível que o diretório app
. Esse arquivo conterá o código a ser executado antes que uma solicitação seja completada, como mostrado abaixo:
// middleware.ts import { NextResponse } from "next/server"; import type { NextRequest } from "next/server"; export function middleware(req: NextRequest) { const { pathname } = req.nextUrl; // Restringe o endpoint /api/hello apenas para POST if (pathname === "/api/hello") { if (req.method !== "POST") { return new NextResponse( `Cannot access this endpoint with ${req.method}`, { status: 400 } ); } } return NextResponse.next(); }
Vantagens e desvantagens do middleware
O middleware adiciona funcionalidades sem modificar o código da aplicação, mas pode aumentar a complexidade e os custos. Ele causa latência, pois o código precisa ser executado antes que a aplicação processe a solicitação.
Quando usar middleware?
O middleware pode ser usado para geolocalização, segurança (autenticação e autorização), testes A/B e limitadores de taxa. Ele oferece controle sobre o fluxo de dados e segurança aumentando a proteção e performance da aplicação.
O que são Edge Functions?
Edge Functions são funções serverless que rodam próximas ao usuário, tornando o processamento de solicitações muito rápido. Ao implantar uma aplicação Next.js na Vercel, o middleware é implantado como Edge Functions em todas as regiões globais, garantindo rapidez e personalização.
Agora que você entende o middleware, é importante conhecer as Edge Functions, que são fundamentais para a criação de experiências de usuário rápidas e personalizadas.