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
的路由不重复?
- 从 "wildcard" 资源导入中排除
ApiController
?
- 单独导入所有其他控制器?
- 其他解决方案?
您在 Nelmio ApiDoc 中得到了重复的条目,因为在 Symfony 中实际上存在重复的路由。执行此命令以查看 Symfony 中的每条路由,包括您的 API 的路由(无论是否带有 /api
前缀都会出现):
php app/console router:debug
正如 Yann 所建议的,我认为最好的方法是为您的 API 控制器(类似于 @MyBundle/ControllerRest/
)创建一个单独的目录并将它们放在那里。然后,不要忘记更新 routing.yml
中 my_api
部分下的资源路由和 API 控制器中的命名空间。
这样你就可以摆脱重复的路由,因此 ApiDoc 每次调用只会显示一条路由,而不是两条。
问题
当我们在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
的路由不重复?
- 从 "wildcard" 资源导入中排除
ApiController
? - 单独导入所有其他控制器?
- 其他解决方案?
您在 Nelmio ApiDoc 中得到了重复的条目,因为在 Symfony 中实际上存在重复的路由。执行此命令以查看 Symfony 中的每条路由,包括您的 API 的路由(无论是否带有 /api
前缀都会出现):
php app/console router:debug
正如 Yann 所建议的,我认为最好的方法是为您的 API 控制器(类似于 @MyBundle/ControllerRest/
)创建一个单独的目录并将它们放在那里。然后,不要忘记更新 routing.yml
中 my_api
部分下的资源路由和 API 控制器中的命名空间。
这样你就可以摆脱重复的路由,因此 ApiDoc 每次调用只会显示一条路由,而不是两条。