Symfony2 路由:导入所有控制器的注释但排除一个(NelmioApiDoc 中的重复路由)

Symfony2 Routing: import all controllers' annotations BUT exclude one (duplicated routes in NelmioApiDoc)

问题

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

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

和:

my_api:
    resource:    'MyBundle\Controller\ApiController'
    type:        rest
    prefix:      /api
    name_prefix: my_api_
    options:
        expose: true

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

问题

我们应该如何做到这一点才能使来自 ApiController 的路由不重复?

您在 Nelmio ApiDoc 中得到了重复的条目,因为在 Symfony 中实际上存在重复的路由。执行此命令以查看 Symfony 中的每条路由,包括您的 API 的路由(无论是否带有 /api 前缀都会出现):

php app/console router:debug

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

这样你就可以摆脱重复的路由,因此 ApiDoc 每次调用只会显示一条路由,而不是两条。