首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在micronaut上启用swagger用户界面?

如何在micronaut上启用swagger用户界面?
EN

Stack Overflow用户
提问于 2022-10-21 20:58:48
回答 1查看 72关注 0票数 2

我在https://micronaut-projects.github.io/micronaut-openapi/latest/guide/上跟踪openapi的micronaut,并且UI没有生成,每次我试图访问/swagger时,/swagger-ui都会出现以下错误:

代码语言:javascript
复制
{
  "message": "Not Found",
  "_links": {
    "self": {
      "href": "/swagger",
      "templated": false
    }
  },
  "_embedded": {
    "errors": [
      {
        "message": "Page Not Found"
      }
    ]
  }
}

安装了依赖项:

代码语言:javascript
复制
implementation("io.swagger.core.v3:swagger-annotations")
annotationProcessor("io.micronaut.openapi:micronaut-openapi:4.5.2")

application.yml上的路由器定义如下:

代码语言:javascript
复制
micronaut:
  application:
    name: myapp
  router:
    static-resources:
      default:
        enabled: true
      swagger:
        enabled: true
        paths: classpath:META-INF/swagger
        mapping: /swagger/**

并创建根文件夹上的文件openapi.properties

代码语言:javascript
复制
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项目上正确地启用swagger呢?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-22 09:03:37

您只在您的swagger中定义了application.yml。您还应该为swagger-ui添加一个具有类似定义的部分:

代码语言:javascript
复制
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文件:

代码语言:javascript
复制
swagger-ui.enabled=true
redoc.enabled=false
rapidoc.enabled=false
rapidoc.bg-color=#14191f
rapidoc.text-color=#aec2e0
rapidoc.sort-endpoints-by=method

你试过用cleanbuild使用gradlew吗?

我在存储库上创建了一个示例GitHub,您可以检查它。

=========UPDATE========

好的,我发现什么是不正确的!您使用的是annotation-processing

代码语言:javascript
复制
annotationProcessor("io.micronaut.openapi:micronaut-openapi:4.5.2")

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

因此,你应该改为:

代码语言:javascript
复制
kapt("io.micronaut.openapi:micronaut-openapi:4.5.2")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74159094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档