有没有办法关闭所有Nelmio Swagger UI文档?在生产环境中,我希望外部世界在以下URL中看不到任何内容,但在开发中,它们应该正常显示有用的文档和沙箱:
似乎应该有一个简单的开关,这在Nelmio配置,但我还没有找到它。我的公司正在使用Symfony中的Nelmio API Doc捆绑包为非公共API开发API。API服务器是公开的,但我们不想向全世界公布它的使用情况。
有没有办法关闭所有Nelmio Swagger UI文档?在生产环境中,我希望外部世界在以下URL中看不到任何内容,但在开发中,它们应该正常显示有用的文档和沙箱:
似乎应该有一个简单的开关,这在Nelmio配置,但我还没有找到它。我的公司正在使用Symfony中的Nelmio API Doc捆绑包为非公共API开发API。API服务器是公开的,但我们不想向全世界公布它的使用情况。
5条答案
按热度按时间ux6nzvsh1#
@gp_sflover的评论让我走上了正确的道路,但它不仅仅是在
AppKernel.php
中禁用NelmioApiDocBundle。引用Nelmio的配置和路由将生成错误,直到您将它们移动到特定于开发人员的文件中。app/AppKernel.php
中的以下更改是第一步:字符串
为了消除配置错误,我必须将以下内容从
app/config/config.yml
中移到config_dev.yml
中:型
类似地,以下内容来自
app/config/routing.yml
并移动到routing_dev.yml
:型
iqxoj9l92#
现在,使用symfony4和flex,您可以正常安装该软件包
字符串
(So在
composer.json
中不会将其设置为require-dev
依赖项)现在,将
project/config/bundles.php
中的设置更改为:型
所以你不会得到错误(例如从注解),但它不会从
Kernel.php
加载7ajki6be3#
为了在特定环境中禁用Nelmio api-doc-bundle,经过一些调查,我最终做了以下事情:
project/config/bundles.php
上有:字符串
nelmio_api_doc.yaml
放在./config/packages/dev/
里面)nelmio_api_doc.yaml
放在./config/routes/dev
里面(而不是在./config/routes
里面),否则,如果你在另一个没有加载bundle的环境中调用路由,而不是404,你会看到500)thtygnil4#
config/bundles.php中没有加载bundle会在NelmioApiDocBundle Version 3的Symfony 4.3中抛出异常:
字符串
最后我在环境中使用重定向禁用了API文档的路由,这需要被禁用(prod):
型
yc0p9oo05#
你也可以在通过控制台转储html文件时使用swagger UI配置禁用沙箱。
字符串
文件:
https://symfony.com/bundles/NelmioApiDocBundle/current/commands.html
Swagger :
https://swagger.io/docs/open-source-tools/swagger-ui/usage/configuration的