Параметр methods атрибута Route
Параметр methods атрибута Route
задаёт список HTTP-методов, при которых
срабатывает маршрут. По умолчанию маршрут
отвечает на любой метод. Если указать методы,
то запрос с другим методом вернёт ошибку 405.
Синтаксис
#[Route(path, name: name, methods: ['GET', 'POST'])]
Пример
Давайте ограничим маршрут только GET-запросом:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index', methods: ['GET'])]
public function index(): Response
{
return new Response('hello');
}
}
?>
Результат выполнения кода для GET-запроса:
"hello"
Результат выполнения кода для POST-запроса:
"405 Method Not Allowed"
Пример
Давайте разрешим сразу два метода GET и POST:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index', methods: ['GET', 'POST'])]
public function index(): Response
{
return new Response('hello');
}
}
?>
Результат выполнения кода для GET-запроса:
"hello"
Результат выполнения кода для POST-запроса:
"hello"
Пример
Давайте используем атрибуты Get и Post
вместо параметра methods:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
use SymfonyComponentRoutingAttributeGet;
use SymfonyComponentRoutingAttributePost;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
#[Get]
#[Post]
public function index(): Response
{
return new Response('hello');
}
}
?>
Результат выполнения кода для GET-запроса:
"hello"