如何在生产中禁用swagger-ui(Thorntail)?

问题描述 投票:1回答:1

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

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

一种可能的解决方案是在构建jar时通过maven配置文件禁用swagger-ui maven依赖。我想避免这种情况,因为那时我必须有一个用于生产的罐子和一个用于开发的罐子。

我看到了许多建议,但它们似乎是特定于Spring Boot,就像这一个How do you turn off swagger-ui in production

java-ee swagger swagger-ui wildfly-swarm thorntail
1个回答
0
投票

我建议主持一个自己的swagger-ui实例而不是使用thorntail中的那个,因为我认为swagger-ui是一个开发工具,我不会直接在thorntail服务中使用它。

如果swagger-ui作为外部独立服务托管,并且您只需要为所有开发人员安装一个,因为它只是html和javascript,那么您只需要在服务中为提供* / swagger.json的端点关注CORS 。在生产环境中提供swagger.json不应该是一个问题,因为它只是你的休息API的文档。

请参阅以下示例以实现从CORS issue on java web application复制的CORS过滤器

public class CorsFilter implements Filter {


    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, HEAD, OPTIONS");
        response.setHeader("Access-Control-Allow-Headers", "Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers");
      if ("OPTIONS".equalsIgnoreCase((HttpServletRequest) servletRequest.getMethod())) {
        response.setStatus(HttpServletResponse.SC_OK);
      } else {
         filterChain.doFilter(servletRequest, response);
      }

    }

    @Override
    public void destroy() {

    }
}               

在这里,您将了解如何启用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>
© www.soinside.com 2019 - 2024. All rights reserved.