Параметр stateless атрибута Route
Параметр stateless атрибута Route
принимает булево значение и указывает
Symfony, что маршрут не должен использовать
сессию. Если для такого маршрута будет
предпринята попытка чтения или записи в
сессию, Symfony выбросит исключение
SessionNotFoundException. Это полезно
для stateless API и повышает
производительность, так как сессия не
запускается.
Синтаксис
#[Route(path, name: name, stateless: true)]
Пример
Давайте создадим stateless-маршрут, который не обращается к сессии:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/api/article', name: 'article_index', stateless: true)]
public function index(): Response
{
return new Response('article');
}
}
?>
Результат выполнения кода для адреса /api/article:
article
Пример
Давайте попробуем обратиться к сессии внутри stateless-маршрута и получим исключение:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/api/user', name: 'article_user', stateless: true)]
public function user(Request $request): Response
{
$request->getSession()->set('key', 'value');
return new Response('user');
}
}
?>
Результат выполнения кода для адреса /api/user:
SymfonyComponentHttpFoundationExceptionSessionNotFoundException