我在追踪Microronautdoctor 的Openapi指数 并且没有生成用户界面,每次我try 访问/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

在我的控制器上,我也有OperationApiResponses注释,但当我运行应用程序时,文件yml不会被生成,我如何才能正确地在我的Micronaut项目上启用Savagger?

代码示例:https://github.com/rafa-acioly/micronaut

推荐答案

你在你的application.yml中只定义了swagger.您还应该为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

你有没有试着用gradlew把你的项目做到cleanbuild

我在GitHub上创建了一个示例repository,您可以查看它.

=UPDATE=

好了,我找到了不正确的地方!您正在使用annotation-processing:

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

但如果您使用的是Kotlin,则应使用kapt-Kotlin注释处理工具.这里有几篇文章--link1,link2篇.

因此,您应该更改为:

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

Kotlin相关问答推荐

Compose:LaunchedEffect在密钥更改后不会重新启动

映射中列表类型的Kotlin可空接收器?

Kotlin 海峡没有结束

在调用父构造函数之前重写类属性

扩展属性委托给实例属性

如何将消费者放入 Kotlin 的 map 中?

TzdbZoneRulesProvider 在 java.time 中不工作

在 Kotlin 中,如何绑定扩展方法以在接收器范围函数中工作

JetPack Compose:添加点击持续时间

kotest 更改环境变量

JobIntentService 被销毁,当应用程序被销毁时

Kotlin:泛型、反射以及类型 T 和 T:Any 之间的区别

TextField maxLength - Android Jetpack Compose

Kotlin:找不到符号类片段或其他 android 类

androidx.core:core-ktx:1.0.0 小部件包丢失

Jetpack Compose – LazyColumn 不重组

在kotlin中,如何模拟封装回调函数?

Kotlin 接口属性:只需要公共 getter 而没有公共 setter

导航架构组件 - 未生成 DestinationFragmentArgs

目前不支持 Gradle 项目的自动库版本更新.请手动更新您的 build.gradle