Middleware
Middleware — функция, которая выполняется между запросом пользователя и ответом сервера.
12345// middleware.ts (в корне проекта)export function middleware(request: NextRequest) {// Делаем что-то с запросомreturn NextResponse.next(); // Пропускаем дальше}
🛠️ ДЛЯ ЧЕГО НУЖНО?
- Защита страниц - Проверяет авторизацию до показа страницы
- Редиректы - Перенаправляет пользователя
- Проксирование API - Скрывает реальные API за своим URL
- Добавление заголовков - Добавляет X-Custom-Header
- Логирование - Записывает все запросы
- Гео-таргетинг - Определяет страну и редиректит
📍 ЧАСТЫЕ КЕЙСЫ
- Защита админки1234
const token = request.cookies.get('token');if (pathname.startsWith('/admin') && !token) {return NextResponse.redirect(new URL('/login', request.url));} - Редирект со старых URL123
if (pathname === '/old-blog') {return NextResponse.redirect(new URL('/blog', request.url));} - Проксирование API (скрываем реальный URL)1234
if (pathname === '/api/weather') {const data = await fetch(`https://api.weatherapi.com/...`);return NextResponse.json(data);} - Добавление заголовков123
const response = NextResponse.next();response.headers.set('X-Request-ID', crypto.randomUUID());return response; - A/B тестирование12
const variant = Math.random() < 0.5 ? 'A' : 'B';return NextResponse.rewrite(new URL(`/ab/${variant}${pathname}`, request.url));
Действия
- return NextResponse.next() - Пропустить
- return NextResponse.redirect(url) - Редирект
- return NextResponse.rewrite(url) - Подменить
- return NextResponse.json() - Ответить JSON
- response.headers.set('key', 'value') - Добавить заголовок