Jakarta ee 如何在生产中禁用Swigger ui(Thorntail)?

Jakarta ee 如何在生产中禁用Swigger ui(Thorntail)?,jakarta-ee,swagger,swagger-ui,wildfly-swarm,thorntail,Jakarta Ee,Swagger,Swagger Ui,Wildfly Swarm,Thorntail,我有一个用Wildfly Swarm(现在的Thorntail)构建的应用程序,我已经将Swagger与我的REST API集成在一起,用于编写文档,还使用它来测试Swagger UI 我想知道在生产环境中部署应用程序时是否可以禁用Swagger UI部分。我试图查看swagger文档,看看是否有任何属性,但找不到任何属性。Thorntail文档中也有相同的内容 一个可能的解决方案是在构建jar时通过maven概要文件禁用swagger-ui-maven依赖关系。我希望避免这种情况,因为这样我就

我有一个用Wildfly Swarm(现在的Thorntail)构建的应用程序,我已经将Swagger与我的REST API集成在一起,用于编写文档,还使用它来测试Swagger UI

我想知道在生产环境中部署应用程序时是否可以禁用Swagger UI部分。我试图查看swagger文档,看看是否有任何属性,但找不到任何属性。Thorntail文档中也有相同的内容

一个可能的解决方案是在构建jar时通过maven概要文件禁用swagger-ui-maven依赖关系。我希望避免这种情况,因为这样我就必须有一个罐子用于生产,一个罐子用于开发


我看到了很多建议,但它们似乎是针对Spring Bug的特定的,像这样一个

< P>我会推荐举办一个自己炫耀的UI实例,而不是使用ThannT尾中的一个,因为我认为SavigueUI是一个开发工具,我不会直接在TothN尾t服务中使用。 如果swagger ui作为一个外部独立服务托管,并且您只需要为所有开发人员安装一次,因为它只是html和javascript,那么您只需要在提供*/swagger.json的端点的服务中考虑CORS。在生产环境中提供swagger.json应该不是问题,因为它只是RESTAPI的文档

请参见以下示例以实现从复制的CORS筛选器

这里您将看到如何启用servlet过滤器

<filter>
  <filter-name>CorsFilter</filter-name>
  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/swaggerJsonEndpoint/*</url-pattern>
</filter-mapping>

克斯菲尔特
org.apache.catalina.filters.CorsFilter
克斯菲尔特
/昂首阔步/*

我建议举办一个自己炫耀的UI实例,而不是在TothN尾t中使用一个,因为我认为SavigueUI是一个开发工具,我不会直接在TothN尾t服务中使用。 如果swagger ui作为一个外部独立服务托管,并且您只需要为所有开发人员安装一次,因为它只是html和javascript,那么您只需要在提供*/swagger.json的端点的服务中考虑CORS。在生产环境中提供swagger.json应该不是问题,因为它只是RESTAPI的文档

请参见以下示例以实现从复制的CORS筛选器

这里您将看到如何启用servlet过滤器

<filter>
  <filter-name>CorsFilter</filter-name>
  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/swaggerJsonEndpoint/*</url-pattern>
</filter-mapping>

克斯菲尔特
org.apache.catalina.filters.CorsFilter
克斯菲尔特
/昂首阔步/*

不幸的是,目前还没有解决方案@Ken如果路径为/swagger ui/*,那么这可以使用servlet请求过滤器完成,然后检查属性以查看是否允许访问。这更像是一个解决办法,但它可能会起作用。@ktulinho过滤器不起作用,因为swagger在服务器上运行时就像一个并行应用程序。我的应用在localhost/myApp中运行,在localhost/swagger ui/中运行swagger。当我用
http://localhost/swagger-ui/index.html?url=http://localhost/swagger.json
,使用此选项,swagger使用URI
/swagger.json
调用我的应用程序,因此,如果我尝试重定向页面,该页面将无法工作。简而言之,我的应用程序看不到URI
swagger ui
。不幸的是,目前还没有解决方案@Ken如果路径为/swagger ui/*,那么这可以使用servlet请求过滤器完成,然后检查属性以查看是否允许访问。这更像是一个解决办法,但它可能会起作用。@ktulinho过滤器不起作用,因为swagger在服务器上运行时就像一个并行应用程序。我的应用在localhost/myApp中运行,在localhost/swagger ui/中运行swagger。当我用
http://localhost/swagger-ui/index.html?url=http://localhost/swagger.json
,使用此选项,swagger使用URI
/swagger.json
调用我的应用程序,因此,如果我尝试重定向页面,该页面将无法工作。简而言之,URI
swagger ui
对于我的应用程序不可见。