Я слежу за документом 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
Вы определили только 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")
@RafaAcioly, не могли бы вы загрузить свой код на GitHub? Поскольку я все еще получаю openapitest-0.0.yml Или, пожалуйста, предоставьте полные файлы application.yml
и build.gradle
Я добавил исходный код на вопрос :)
Спасибо за ваше обновление, страница теперь находится, но активы нет, каждый .css
и .js
получает 404
Это действительно странно. Я только что проверил это на своем компьютере, и все в порядке. Можете ли вы найти файлы .css
и .js
в разделе build/tmp/kapt3/classes/main/META-INF/swagger/views/swagger-ui/res
?
Файлы
yml
не генерируются, я также использовалswagger-ui
наrouter
, почистил и собрал заново, результат тот же