Слияние схем swagger UI Micronaut

Я пытаюсь объединить схему дополнительных файлов в пользовательском интерфейсе micronaut swagger. Я думаю, что файл не подбирается во время сборки, совершенно не уверен, как установить правильный путь для дополнительного файла.

Внутри ресурса присутствует дополнительный файл

введите описание изображения здесь

В конфигурации application.yml я установил следующую конфигурацию

micronaut:
  openapi:
    additional:
      files= src/main/resources/swagger/swaggerSecuritySchemes.yml

swaggerSecuritySchemes.yml

securitySchemes:
  Open Id Connect:
    type: oauth2
    flows:
      authorizationCode:
        authorizationUrl: https://falconidentityserver.azurewebsites.net/connect/authorize
        tokenUrl: https://falconidentityserver.azurewebsites.net/connect/token
        refreshUrl: ""
        scopes:
          openid: Open Id scope
          profile: Name scope
          email: Email scope
        usePkceWithAuthorizationCodeGrant: true

В файле build swagger yml эта конфигурация отсутствует, я думаю, что файл не выбирается во время процесса сборки, как мы можем установить путь для дополнительных файлов

Из документации микронавта

micronaut.openapi.additional.files={project.home}/src/test/resources/swagger

что такое project.home?

Я попробовал приведенный ниже код в файле build.gradle, но он не слил ничего из другого файла.

tasks.withType(JavaCompile).all {
    options.fork = true
    options.forkOptions.jvmArgs << '-Dmicronaut.openapi.views.spec=swagger-ui.enabled=true,swagger-ui.theme=MATERIAL'
    options.forkOptions.jvmArgs << '-Dmicronaut.openapi.additional.files=src/main/resources/swagger'
    options.compilerArgs += ['--enable-preview']
}

Обновление 1

components:
  securitySchemes:
    Open Id Connect:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://falconidentityserver.azurewebsites.net/connect/authorize
          tokenUrl: https://falconidentityserver.azurewebsites.net/connect/token
          refreshUrl: ""
          clientId: xxxxxxxxxx
          clientSecret: xxxxx-xxxxxxxxxxxxx
          scopes:
            openid: Open Id scope
            profile: Name scope
            email: Email scope
          usePkceWithAuthorizationCodeGrant: true

Включение приведенного выше определения объединило конфигурацию, однако в окончательном документе clientId, clientSecret и usePkceWithAuthorizationCodeGrant не объединены, почему?


person San Jaisy    schedule 15.01.2021    source источник


Ответы (2)


Как указано в документации, по порядку:

Чтобы настроить путь для дополнительных файлов swagger, вам необходимо установить свойство System micronaut.openapi.additional.files

micronaut.openapi.additional.files следует добавить как Системное свойство для вашей сборки, поскольку документация OpenAPI создается во время сборки / компиляции, а не во время выполнения, поэтому добавление этого свойства в конфигурацию application.yml (время выполнения) не даст никакого эффекта.

Gradle:

Если вы используете gradle, вы можете добавить это свойство micronaut.openapi.additional.files либо:

  • в командной строке Свойства системы при запуске сборки:

    $ ./gradlew build -Dmicronaut.openapi.additional.files=src/main/resources/swagger
    
  • в ваш проект gradle.properties, избегая таким образом добавления свойства System при каждой сборке:

    systemProp.micronaut.openapi.additional.files=src/main/resources/swagger
    

Maven:

Если вы используете maven, вы можете добавить свойство micronaut.openapi.additional.files либо:

  • в командной строке Свойства системы, а также при запуске вашей сборки:

    $ mvn clean compile -Dmicronaut.openapi.additional.files=src/main/resources/swagger
    
  • в дескриптор вашего проекта pom.xml в качестве свойства проекта, что позволяет избежать добавления свойства System при каждой сборке:

    <properties>
        <micronaut.openapi.additional.files>src/main/resources/swagger</micronaut.openapi.additional.files>
    </properties>
    

Примечание

Обратите внимание, что в конфигурации обоих инструментов сборки свойство micronaut.openapi.additional.files указывало на путь к каталогу (src / main / resources / swagger), а не на путь к файлу, поскольку в документации не упоминается, что это свойство принимает каталоги, а не явно files как его значение.

Насколько мне известно, дополнительные файлы не поддерживают объявление securitySchemes и объединяют только paths документацию. Но я мог упустить некоторые детали и в противном случае не стесняйтесь вызвать проблему в репозитории micronaut-openapi.

person tmarwen    schedule 15.01.2021
comment
Спасибо за информацию, я устал от options.forkOptions.jvmArgs ‹< '-Dmicronaut.openapi.additional.files = src / main / resources / swagger' в build.gradle, но ничего не происходит - person San Jaisy; 15.01.2021
comment
Я думаю, что этот путь у меня не работает ..... - person San Jaisy; 15.01.2021
comment
Вот репозиторий github.com/anandjaisy/micronuatswaggermerging - person San Jaisy; 15.01.2021
comment
Привет, @SanJaisy, не могли бы вы обновить свою ветку, чтобы упомянуть ответ на сообщение EDIT, чтобы разрешить инкрементное обновление информации. Не могли бы вы добавить и свой результат компиляции? - person tmarwen; 15.01.2021
comment
Вы тоже обратили внимание на * схемы безопасности *? Насколько я могу судить, ответ должен быть приемлемым, поскольку проблема связана с содержимым файла yaml. - person tmarwen; 15.01.2021
comment
Я имел в виду editor.swagger.io. Мне нужно объединить схему безопасности, не могли бы вы подсказать, как я могу это сделать. - person San Jaisy; 15.01.2021
comment
возможно, это не случай автора, а предупреждение для других - использование файла .yaml вместо .yml не сработает (не уверен, что это ошибка или какая-то недокументированная функция) - person CodeFactory.DEV; 19.01.2021
comment
@tmarwen, не могли бы вы проверить мой текст в обновлении 1, документ теперь объединен, но некоторые поля не объединены? - person San Jaisy; 21.01.2021

Это сработало для меня, попробуйте следующее:

Шаг 1: Создайте папку с именем openapi в корневом каталоге.

Шаг 2: Затем вручную создайте свой yml в папке openapi и укажите свой schemas в файле в соответствии с (OpenAPI specification).

Шаг 3: Теперь, чтобы объединить оба файла с generated OpenAPI definition. Вам нужно указать Micronaut для поиска дополнительных OpenAPI yaml-файлов в папке openapi. Итак, вам нужно установить свойство micronaut.openapi.additional.files

Чтобы указать micronaut на папку openapi:

Шаг 1. Найдите файл openapi.properties в корневом каталоге. Если файла нет, создайте его.

Шаг 2: Получив файл, вставьте его внутрь файла - ›micronaut.openapi.additional.files=openapi

Подтверждение: чтобы подтвердить, что микронавт действительно объединяет файл или нет после этого процесса. Обратите внимание на логи, пока сервер запускается ...

Если процесс прошел успешно, вы должны увидеть следующее:

Note: Merging Swagger OpenAPI YAML files from location: whateverDirectory/openapi
Note: Reading Swagger OpenAPI YAML file YourFileName.yml
person Shïvà Tömàr    schedule 24.05.2021