Установите basePath в Swagger 2.x с помощью swagger-jaxrs2 и файла openapi-configuration.yaml - PullRequest
1 голос
/ 12 июня 2019

Как мне установить базовый путь в Swagger 2.x?

Приложение построено на JaxRS и Wildfly. Swagger настраивается с использованием автоматической конфигурации из swagger-jaxrs2 и файла openapi-configuration.yaml.

Я могу открыть swagger-ui и просмотреть документацию по API, но когда я хочу "попробовать", запросы не идут по правильному URL, потому что отсутствует корень контекста jboss. Как я могу добавить этот корневой контекст в сгенерированный openapi.json?

Я прочитал в документации, что могу расширять приложение и настраивать swagger программно, но я бы предпочел, чтобы конфигурация оставалась в maven. Это многомодульный проект, поэтому я хотел бы избежать дублирования кода и сделать процесс установки новых модулей простым. Это возможно?

pom.xml:

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

JBoss-web.xml

<jboss-web xmlns="http://www.jboss.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-web_5_1.xsd">
<context-root>/app-root</context-root>
</jboss-web>

web.xml

<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <servlet-mapping>
        <servlet-name>javax.ws.rs.core.Application</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

openapi-configuration.yaml (заполнен фильтрацией ресурсов maven):

resourcePackages:
  - ${project.groupId}
prettyPrint: true
cacheTTL: 0
openAPI:
  info:
    version: ${project.version}
    title: ${project.name}
    description: ${project.description}
    contact:
      email: contact@email.com

1 Ответ

0 голосов
/ 04 июля 2019

Вы можете добавить расположение серверов в ваш openapi.yaml.Это должно выглядеть так:

openapi: 3.0.1
info:
  version: ${project.version}
  title: ${project.name}
servers:
  url: /app-root
paths:

URL-адрес сервера может быть заменен переменной, которая заполняется maven.

...