【问题标题】:Configure Jersey 2 web.xml for Swagger/ OpenAPI v3为 Swagger/OpenAPI v3 配置 Jersey 2 web.xml
【发布时间】:2021-01-21 01:55:55
【问题描述】:

我正在运行 Jersey 2.30.1 API,我想将 Swagger 文档升级到 OpenAPI v3。

我在 pom.xml 中的新 swagger 依赖项如下所示:

<dependency>
        <groupId>org.webjars</groupId>
        <artifactId>swagger-ui</artifactId>
        <version>3.17.0</version>
</dependency>
<dependency>
        <groupId>io.swagger.core.v3</groupId>
        <artifactId>swagger-jaxrs2</artifactId>
        <version>2.0.2</version>
</dependency>
<dependency>
        <groupId>io.swagger.core.v3</groupId>
        <artifactId>swagger-jaxrs2-servlet-initializer</artifactId>
        <version>2.0.2</version>
</dependency>

以前(带有 swagger-ui 2.2.10-1 的 swagger 1.5),我在 web.xml 中配置了 Swagger:

<servlet>
            <servlet-name>Jersey2Config</servlet-name>
            <servlet-class>io.swagger.jersey.config.JerseyJaxrsConfig</servlet-class>
            <init-param>
                <param-name>api.version</param-name>
                <param-value>2.0</param-value>
            </init-param>
            <init-param>
                <param-name>swagger.api.basepath</param-name>
                <param-value>/api</param-value>
            </init-param>
            <load-on-startup>4</load-on-startup>
</servlet>

我现在也想做同样的事情,但我找不到文档,是否以及如何实现。

如何使用 OpenAPI v3 在我的 web.xml 中定义 swagger 基本路径和 API 版本?

【问题讨论】:

  • FWIW,我遇到了同样的问题。如果您找到了解决方案,请告诉我们
  • @RvPr 我添加了一个答案,您可能想查看它是否与您相关。

标签: java jersey-2.0 openapi swagger-2.0


【解决方案1】:

玩了这个之后,我的解决方案基本上是这样的。

pom.xml:

<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>swagger-ui</artifactId>
    <version>3.52.1</version>
</dependency>

<dependency>
    <groupId>io.swagger.core.v3</groupId>
    <artifactId>swagger-jaxrs2</artifactId>
    <version>2.1.10</version>
</dependency>

<dependency>
    <groupId>io.swagger.core.v3</groupId>
    <artifactId>swagger-jaxrs2-servlet-initializer</artifactId>
    <version>2.1.10</version>
</dependency>

web.xml:

Jersey2Config servlet 已从 web.xml 中完全删除。 参数io.swagger.v3.jaxrs2.integration.resources需要修改servlet配置

<servlet>
    <servlet-name>my servlet</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>jersey.config.server.provider.packages</param-name>
      <param-value>my.package.to.scan, io.swagger.v3.jaxrs2.integration.resources</param-value>
    </init-param>
  </servlet>

除了 web.xml 之外,还必须在 src/main/webapp/WEB-INF 下创建一个新文件 openapi.yaml。这负责创建 openapi.yaml/openapi.json 文件,该文件将被 swagger ui 使用。

openapi.yaml:

prettyPrint: true
cacheTTL: 0
readAllResources: false /** Only show methods in swagger-ui that are annotated */
openAPI:
  info:
    version: '1.0'
    title: 'my application'
  servers:
    - url: '/my-application'

招摇用户界面:

...
window.onload = function() {

    const window.ui = SwaggerUIBundle({
        url: 'https://my-domain.com/my-application/openapi.json',
        dom_id: '#swagger-ui-container',
        docExpansion: 'none',
        defaultModelsExpandDepth: -1,
        deepLinking: true,
        presets: [
          SwaggerUIBundle.presets.apis,
          SwaggerUIStandalonePreset
        ],
        plugins: [
          SwaggerUIBundle.plugins.DownloadUrl
        ],
        layout: "StandaloneLayout",
        apisSorter: "alpha",
        tagsSorter: "alpha",
        operationsSorter: "alpha",
        validatorUrl: null
      });
}
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 2020-04-04
    • 2018-03-27
    相关资源
    最近更新 更多