Как включить пользовательский интерфейс swagger на micronaut?

Я слежу за документом micronaut по openapi на https://micronaut-projects.github.io/micronaut-openapi/latest/guide/ и пользовательский интерфейс не создается, каждый раз, когда я пытаюсь получить доступ к /swagger, /swagger-ui я получаю эту ошибку:

{
  "message": "Not Found",
  "_links": {
    "self": {
      "href": "/swagger",
      "templated": false
    }
  },
  "_embedded": {
    "errors": [
      {
        "message": "Page Not Found"
      }
    ]
  }
}

Зависимости установлены:

implementation("io.swagger.core.v3:swagger-annotations")
annotationProcessor("io.micronaut.openapi:micronaut-openapi:4.5.2")

Роутер на application.yml определяется:

micronaut:
  application:
    name: myapp
  router:
    static-resources:
      default:
        enabled: true
      swagger:
        enabled: true
        paths: classpath:META-INF/swagger
        mapping: /swagger/**

и создается файл openapi.properties в корневой папке:

swagger-ui.enabled=true
micronaut.openapi.views.spec=apidoc.enabled=true,swagger-ui.enabled=true,swagger-ui.theme=flattop
micronaut.openapi.expand.api.version=v0.1
micronaut.openapi.expand.openapi.description=myapp

согласно документам должен быть сгенерирован файл .yml;

Для Kotlin build/tmp/kapt3/classes/main/META-INF/swagger/myapp-0.1.yml

На моих контроллерах у меня также есть аннотации Operation и ApiResponses, но когда я запускаю приложение, файл yml не создается, как мне правильно включить swagger в моем проекте micronaut?

Пример кода: https://github.com/rafa-acioly/micronaut

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
125
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы определили только swagger в своем application.yml. Вы также должны добавить раздел для swagger-ui с аналогичным определением:

micronaut:
  application:
    name: openapitest
  router:
    static-resources:
      swagger:
        paths: classpath:META-INF/swagger
        mapping: /swagger/**
      swagger-ui:
        paths: classpath:META-INF/swagger/views/swagger-ui
        mapping: /swagger-ui/**

Кроме того, я использовал файл openapi.properties по умолчанию:

swagger-ui.enabled=true
redoc.enabled=false
rapidoc.enabled=false
rapidoc.bg-color=#14191f
rapidoc.text-color=#aec2e0
rapidoc.sort-endpoints-by=method

А вы пробовали clean и build свой проект с gradlew?

Я создаю образец репозитория на GitHub, и вы можете его проверить.

=========ОБНОВЛЕНИЕ========

Хорошо, я нашел, что неправильно! Вы используете annotation-processing :

annotationProcessor("io.micronaut.openapi:micronaut-openapi:4.5.2")

Но если вы используете Kotlin, вам следует использовать kapt — Kotlin Annotation Processing Tool. Вот несколько статей - ссылка1 , ссылка2.

Итак, вы должны измениться на:

kapt("io.micronaut.openapi:micronaut-openapi:4.5.2")

Файлы yml не генерируются, я также использовал swagger-ui на router, почистил и собрал заново, результат тот же

Rafa Acioly 24.10.2022 14:46

@RafaAcioly, не могли бы вы загрузить свой код на GitHub? Поскольку я все еще получаю openapitest-0.0.yml Или, пожалуйста, предоставьте полные файлы application.yml и build.gradle

Иван Зыков 24.10.2022 15:14

Я добавил исходный код на вопрос :)

Rafa Acioly 24.10.2022 15:26

Спасибо за ваше обновление, страница теперь находится, но активы нет, каждый .css и .js получает 404

Rafa Acioly 26.10.2022 17:06

Это действительно странно. Я только что проверил это на своем компьютере, и все в порядке. Можете ли вы найти файлы .css и .js в разделе build/tmp/kapt3/classes/main/META-INF/swagger/views/swagger-‌​ui/res?

Иван Зыков 26.10.2022 17:16

Другие вопросы по теме