Версия (версии) Symfony : 4.2.1
Описание Я пытаюсь сделать POST-запрос на URL POST http://localhost:3000/api и получить ответкак
POST http://localhost:3000/api
{"message":"No route found for \u0022POST \/api\u0022"}```
Но POST http://localhost:3000/api/ доступно
POST http://localhost:3000/api/
Я тоже читал этот раздел https://symfony.com/doc/current/routing.html#redirecting-urls-with-trailing-slashes
Как убрать косую черту с конца, когда я делаю POST-запросы?Я не нашел простой способ сделать это и подумал, что это ошибка.Проблема была создана https://github.com/symfony/symfony/issues/29706
Я получил ответ: Решение этой проблемы объяснено в https://symfony.com/blog/new-in-symfony-4-1-configurable-trailing-slash-on-imported-routes
И следует использовать этот метод https://github.com/symfony/symfony/blob/32a53bfc1346cac0d906b0f9c43498539e417576/src/Symfony/Component/Routing/Loader/Configurator/ImportConfigurator.php#L44
В файлах yamlмы просто должны установить trailing_slash_on_root: false.Может ли кто-нибудь помочь мне с лучшим способом удалить слеш, используя мою конфигурацию PHP?
trailing_slash_on_root: false
Как воспроизвести routes.php
routes.php
<?php use Symfony\Component\Routing\RouteCollection; use Symfony\Component\Routing\Route; # Api $routesApi = new RouteCollection(); $routesApi->add('api', (new Route('')) ->setDefault('_controller', [App\Controller\Api\DefaultController::class, 'index']) ->setMethods('POST') ); $routesApi->addPrefix('api'); $routesApi->addNamePrefix('api_'); # Default app $routes = new RouteCollection(); $routes->addCollection($routesApi); return $routes;
Отладка маршрутизатора
[vagrant@localhost htdocs]$ php bin/console debug:router ------------------ -------- -------- ------ -------------------------- Name Method Scheme Host Path ------------------ -------- -------- ------ -------------------------- api_api POST ANY ANY /api/ ------------------ -------- -------- ------ --------------------------