Странная проблема с TomEE 8.0.4 и расширением OpenAPI (Swagger-UI 1.0.3)

#swagger-ui #openapi #apache-tomee #microprofile

#swagger-ui #openapi #apache-tomee #микропрофиль

Вопрос:

Я использую TomEE microprofile и таким образом определил путь к своему приложению rest:

  @ApplicationPath("api")
 public class RestConfiguration extends Application {

 }
  

При развертывании приложения в журнале tomee log отображается URL-адрес доступа к сгенерированным интерфейсным ресурсам:

  Service URI: http://localhost:8080/api/openapi-ui/
 
  

При доступе к URL-адресу появилось это сообщение на веб-странице swagger-ui:

Ошибка выборки не определена /openapi

Если я изменю путь к приложению на пустой:

  @ApplicationPath("")
  

Тогда все работает нормально, и swagger показывает все определения методов обслуживания.

Итак, что мне следует сделать, чтобы заставить его работать, добавив «api» в аннотацию ApplicationPath?

Пробовал с «/ api», но тоже не работает.

Ответ №1:

Я провел тест здесь с Tomee-8.0.4, следуя конфигурациям, предположил, что вы используете JAR.

в вашем pom.xml используйте зависимость:

     <dependency>
        <groupId>org.microprofile-ext.openapi-ext</groupId>
        <artifactId>openapi-ui</artifactId>
        <version>1.1.3</version>
    </dependency>

 <build>
        <finalName>tomee-demo</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.tomee.maven</groupId>
                <artifactId>tomee-maven-plugin</artifactId>
                <version>${tomee.version}</version>
                <executions>
                    <execution>
                        <id>executable-jar</id>
                        <phase>package</phase>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <context>ROOT</context>
                    <tomeeClassifier>microprofile</tomeeClassifier>
                </configuration>
            </plugin>
        </plugins>
    </build>
  

в microprofile-config.properties используется:

 mp.openapi.servers=http://localhost:8080/api
openapi.ui.yamlUrl=/api/openapi
openapi.ui.serverVisibility=visible
  

и запустите свой проект снова.

тест выполнен

ссылка:https://github.com/microprofile-extensions/openapi-ext/tree/master/openapi-ui

Комментарии:

1. После выполнения ваших предложений по поводу файла microprofile-config.properties проблема была решена, и теперь пользовательский интерфейс swagger работает нормально. Спасибо за эту информацию, чувак!.