Вопрос проверяет опыт использования middleware в Next.js и понимание их практического применения.
Middleware в Next.js — это функции, которые выполняются перед обработкой запроса. Они используются для аутентификации, логирования, редиректов и модификации ответов. Middleware работает на edge-серверах и может обрабатывать запросы до их попадания в приложение.
Middleware предоставляет мощный механизм для перехвата и обработки запросов до того, как они достигнут страниц или API-роутов.
Основные use cases для middleware:
Аутентификация и авторизация: Проверка прав доступа пользователя
Геолокация: Перенаправление пользователей基于 их местоположения
Логирование: Сбор аналитики и мониторинг запросов
Модификация заголовков: Добавление или изменение HTTP-заголовков
Пример middleware для аутентификации:
// middleware.js
import { NextResponse } from 'next/server'
export function middleware(request) {
const token = request.cookies.get('auth-token')
if (!token) {
return NextResponse.redirect(new URL('/login', request.url))
}
return NextResponse.next()
}
export const config = {
matcher: '/dashboard/:path*'
}Особенности работы:
Выполняется на edge-серверах (ближе к пользователю)
Может работать с запросами к страницам и API-роутам
Поддерживает условную логику на основе пути запроса
Вывод: Middleware — мощный инструмент для централизованной обработки запросов и реализации cross-cutting concerns.