Swagger-UI (Docker) - не поддерживает базовый путь, когда "Попробуйте" - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть приложение JAX-RS, которое экспортирует openapi.json с Swagger2:

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"
                }
              }
            }
          }
        }
      }
    }

    ...
  }
}

Теперь япытаюсь показать Swagger-UI в контейнере Docker:
docker run -p 80:8080 -e URL="http://localhost:8080/notification/rest/openapi.json" swaggerapi/swagger-ui

Swagger2 открыт нормально.Но функция "Try it out", которую он пытается запросить:
http://localhost:8080/sms/send

Отсутствует контекст и базовый путь /notification/rest/

Возможно ли настроить чванство-ui для создания запроса URL:
http://localhost:8080/notification/rest/sms/send?

1 Ответ

0 голосов
/ 23 февраля 2019

Решено.

Просто настройте 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) {
    }
}
...