Symfony2路由:导入所有控制器';注释,但不包括一条(NelmioApiDoc中的重复路由) 问题

Symfony2路由:导入所有控制器';注释,但不包括一条(NelmioApiDoc中的重复路由) 问题,symfony,symfony-routing,Symfony,Symfony Routing,当我们在routing.yml中定义时: my_controllers: resource: "@MyBundle/Controller/" type: annotation prefix: / 以及: 我们在NelmioApiDoc中得到了重复的路由: 问题 我们应该如何做才能使来自ApiController的路由不会重复 从“通配符”资源导入中排除ApiController 是否单独导入所有其他控制器 其他解决方案 您在Nelmio ApiDoc中会

当我们在
routing.yml
中定义时:

my_controllers:
    resource: "@MyBundle/Controller/"
    type:     annotation
    prefix:   /
以及:

我们在
NelmioApiDoc
中得到了重复的路由:

问题 我们应该如何做才能使来自
ApiController
的路由不会重复

  • 从“通配符”资源导入中排除ApiController
  • 是否单独导入所有其他控制器
  • 其他解决方案

您在Nelmio ApiDoc中会得到重复的条目,因为Symfony中实际上存在重复的路由。执行此命令以查看Symfony中的每个路由,包括API中的路由(将显示带有
/API
前缀和不带前缀的路由):

正如Yann所建议的,我认为最好的方法是为API控制器创建一个单独的目录(类似于
@MyBundle/controllerest/
)并将它们放在那里。然后,不要忘记更新
routing.yml
my_api
部分下的资源路由以及api控制器中的名称空间


通过这种方式,您可以消除重复的路由,因此ApiDoc每次调用只显示一个路由,而不是两个。

我认为没有办法从dir导入中“排除”文件。您应该考虑在不同的目录中分离应用程序和API控制器,以便可以单独导入它们。
my_api:
    resource:    'MyBundle\Controller\ApiController'
    type:        rest
    prefix:      /api
    name_prefix: my_api_
    options:
        expose: true
php app/console router:debug