Групи підключаються автоматично: web - до routes/web.php, api - до routes/api.php.
Група web - усе для сторінок у браузері:
EncryptCookiesіAddQueuedCookiesToResponse- шифровані cookie;StartSession- сесія;ShareErrorsFromSession- змінна$errorsу шаблонах;PreventRequestForgery- захист від CSRF (у Laravel 13 спершу перевіряє заголовокSec-Fetch-Site, потім токен);SubstituteBindings- прив'язка моделей до параметрів маршруту.
Група api - лише SubstituteBindings. Немає сесії, cookie й CSRF: API зазвичай автентифікується токеном (auth:sanctum) і не тримає стану.
Наслідки, про які питають:
- маршрут з
routes/api.phpне бачить сесії йold(); - SPA на тому самому домені через Sanctum працює з cookie - для цього Sanctum додає потрібні middleware до
apiчерезstatefulApi(); routes/api.phpу свіжому Laravel 11+ немає - його створюєphp artisan install:api.
Додати своє в групу:
->withMiddleware(function (Middleware $middleware): void {
$middleware->web(append: [SetLocale::class]);
$middleware->api(prepend: [ForceJsonResponse::class]);
})