docker - Swagger-UI(Docker)- “Try it out”时不维护基本路径

标签 docker jax-rs swagger swagger-ui

我有一个JAX-RS应用程序,它使用Swagger2导出了openapi.json:
http://localhost:8080/notification/rest/openapi.json
并公开OpenAPI:

{
  "openapi" : "3.0.1",
  "info" : {
    "title" : "Notification Module",
    "version" : "1.0"
  },
  "paths" : {
    "/sms/send" : {
      "post" : {
        "operationId" : "send_1",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Sms"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SendSmsResult"
                }
              }
            }
          }
        }
      }
    }

    ...
  }
}

现在,我试图在Docker容器中显示Swagger-UI:docker run -p 80:8080 -e URL="http://localhost:8080/notification/rest/openapi.json" swaggerapi/swagger-ui
Swagger2正常打开。
但是它尝试要求“尝试一下”功能:http://localhost:8080/sms/send
缺少上下文和基本路径/notification/rest/
是否可以将swagger-ui配置为将URL请求创建为:http://localhost:8080/notification/rest/sms/send

最佳答案

解决了。

只需将servers配置为openapi-configuration.yaml即可使用。

resourcePackages:
  - com.mycompany.app.rest
prettyPrint: true
cacheTTL: 0
buildContext: true
openAPI:
  servers:
    - url: http://localhost:8080/notification
  info:
    version: '1.0'
    title: Notification Module

另外,添加带有@Context ServletConfig参数的构造函数也很重要:
@ApplicationPath("/rest")
public class App extends Application {
    public App(@Context ServletConfig servletConfig) {
    }
}

关于docker - Swagger-UI(Docker)- “Try it out”时不维护基本路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54837703/

相关文章:

java - 使用 Jersey 客户端上传文件的最佳方法是什么?

spring-boot - 具有多态性的 Swagger UI 未显示正确的模型

java - 将 swagger json 转换为 mashery io-docs json

curl - 使用 curl 连接到 docker

docker - 将卷挂载到Docker容器中并查看主机系统上的更改

docker - Docker容器在Jelastic环境中停止

java - 如何将处理程序注册到使用 XmlAdapter 的 JAXB 注释类,以便向 REST 资源客户端发送错误消息?

maven - 与 Maven 的 IncompatibleClassChangeError - Jersey - Tomcat

java - 由于 ContainerCannotRun,kubernetes 无法启动 pod

c# - 如何在 Swagger-ui 进行的 oauth2/token 调用中发送 "audience"字段?