【问题标题】:How to set Swagger UI's queryConfigEnabled parameter with Apache CXF?如何使用 Apache CXF 设置 Swagger UI 的 queryConfigEnabled 参数?
【发布时间】:2022-08-24 09:06:01
【问题描述】:

我们在我们的 web 应用程序(部署在 Tomcat 中)中使用 Apache CXF for Swagger 来显示我们应用程序的 REST 端点。在我们将 Swagger UI 从 3.52.5 升级到版本 4.x.x 之前,一切都已配置并且运行良好。在 Swagger UI 版本 4.x.x 中,我们始终获得默认的 Petstore API。我发现原因是https://github.com/swagger-api/swagger-ui/issues/7702 我们使用url 参数,由于安全原因,从 URL 读取配置参数被禁用,该参数被忽略。 我们使用的网址:http://host:port/webappname/doc/api-docs?url=/webappname/doc/openapi.json#/

我正在尝试通过将queryConfigEnabled 参数设置为true 来启用从URL 读取配置参数,但这对我不起作用(我知道存在安全问题)。我发现此页面 (https://cwiki.apache.org/confluence/display/CXF20DOC/OpenApiFeature) 非常接近我正在寻找的内容,但我找不到任何关于如何在我的web.xml 中为swaggerUiConfig 属性设置queryConfigEnabled 的示例。有人可以通过提供如何设置的示例来帮助我吗?

示例 web.xml:

<servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>
          org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet
    </servlet-class>
    <init-param>
                   <param-name>javax.ws.rs.Application</param-name>
                   <param-value>com.abc.xyz.MyApp</param-value>
    </init-param>
    <init-param>
                   <param-name>redirects-list</param-name>
                   <param-value>
                         .*\\.jsp
                         .*\\.jspx
                   </param-value>
    </init-param>
    <init-param>
                   <param-name>redirect-servlet-name</param-name>
                   <param-value>mvc-dispatch</param-value>
    </init-param>
    <init-param>
                   <param-name>static-resources-list</param-name>
                   <param-value>
                          /index.html
                          .*\\.html
                          .*\\.htm
                          .*\\.json
                          .*\\.js
                          </param-value>
    </init-param>
    <init-param>
                   <param-name>static-welcome-file</param-name>
                   <param-value>/index.html</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

使用的版本:
CXF:3.5.1(如果需要可以升级到最新的CXF (https://mvnrepository.com/artifact/org.apache.cxf/cxf-core)
Swagger UI:4.13.2(对 4 系列中的任何版本开放(https://mvnrepository.com/artifact/org.webjars/swagger-ui
JDK:openjdk 版本\"17.0.3\"
平台:视窗
容器:Tomcat 9.0.64

    标签: jax-rs cxf swagger-ui


    【解决方案1】:

    您不能直接为web.xml 中的swaggerUiConfig 属性设置queryConfigEnabled,但由于您使用的是JAX-RS 应用程序实例com.abc.xyz.MyApp,因此最简单的方法是将其包含在getSingletons() 方法中:

    class com.abc.xyz.MyApp extends Application {
        @Override
        public Set<Object> getSingletons() {
            final OpenApiFeature feature = new OpenApiFeature();
            
            feature.setSwaggerUiConfig(
                new SwaggerUiConfig()
                    .url("/api-docs/openapi.json") /* please change that */
                    .queryConfigEnabled(true));
    
            return Collections.singleton(feature);
        }
    }
    

    希望能帮助到你。

    【讨论】:

      猜你喜欢
      • 2015-06-12
      • 2022-12-15
      • 1970-01-01
      • 2021-10-09
      • 2022-08-19
      • 1970-01-01
      • 2019-04-24
      • 2012-05-15
      • 1970-01-01
      相关资源
      最近更新 更多