正如您所提到的,您需要配置 nelmio_api_doc.yaml 文件的区域部分,如下所示https://symfony.com/doc/current/bundles/NelmioApiDocBundle/areas.html
在您的情况下,您将拥有包 nelmio_api_doc.yaml 文件,如下所示:
nelmio_api_doc:
areas:
default:
path_patterns: [ ^/api ]
admin:
path_patterns: [ ^/admin ]
或者无论您的路线中的模式是什么,它都知道要检查哪些控制器功能来检查招摇注解。
在您的路由配置 nelmio_api_doc.yaml 中:
app.swagger_ui:
path: /doc/{area}
methods: GET
defaults: { _controller: nelmio_api_doc.controller.swagger_ui, area: api }
因此 api 文档将可以通过 /doc 或 /doc/api 访问,任何其他区域都可以通过添加附加区域名称来访问,例如 /doc/admin 等。
请注意,我已将路由设置为 /doc/ 以防止与为 ^/api 设置的防火墙模式冲突,因为它可能会发生冲突,您可以添加一个额外的防火墙规则来首先捕获它,我决定只是更改这条路线。如果您将 swagger ui 路由作为 /api/doc 使用,则需要将默认区域路径模式更改为:
path_patterns: [ ^/api(?!/doc$) ]
如 symfony 文档中所示。