我正在使用Symfony 4和Nelmio Api Doc Bundle创建一个只能通过谷歌API访问的服务(公共前端和私有后台都将使用JS框架创建)
我需要2个文档(可能以后再介绍):
现在我在src / Controllers / Admin和src / Controller / API中有一些控制器,因为它们确实不同。
我不明白如何使用Nelmio Api Doc Bundle处理2个不同URL中的2个文档。我知道有些地方,但是我不知道该如何处理...
有人可以通过提供一个简单的例子来帮助我吗?
谢谢
答案 0 :(得分:0)
正如您提到的那样,您需要配置nelmio_api_doc.yaml文件的area部分,如此处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 }
因此可以通过/ doc或/ doc / api访问api文档,可以通过添加区域名称(例如/ doc / admin等)来访问其他任何区域。
请注意,我已将路由设置为/ doc /以防止与为^ / api设置的防火墙模式冲突,因为它可能会首先冲突,因此您可以添加一条额外的防火墙规则以首先捕获它只是改变路线。 如果您将swagger ui路由设为/ api / doc,则需要将默认区域路径模式更改为:
path_patterns: [ ^/api(?!/doc$) ]
如symfony文档中所示。