如何使用PHP配置文件在Symfony 4.2中关闭trailingSlashOnRoot?

时间:2018-12-29 01:08:51

标签: php symfony4

受影响的Symfony版本:4.2.1

说明
我正在尝试向URL发出POST请求 POST http://localhost:3000/api 并收到响应

{"message":"No route found for \u0022POST \/api\u0022"}```

但是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配置删除斜杠的最佳方法?

如何复制
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/
 ------------------ -------- -------- ------ --------------------------

0 个答案:

没有答案