【问题标题】:Merging Schemas swagger UI Micronaut合并模式招摇 UI Micronaut
【发布时间】:2021-01-15 04:50:21
【问题描述】:

我正在尝试在 micronaut 招摇 UI 中合并附加文件架构。我认为该文件在构建期间没有被拾取,不太确定如何为附加文件设置正确的路径。

在资源内部存在附加文件

在 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 文档

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

包括上面的定义合并了配置,但是在最终文档中clientIdclientSecretusePkceWithAuthorizationCodeGrant没有合并,为什么? p>

【问题讨论】:

    标签: java swagger swagger-ui micronaut micronaut-client


    【解决方案1】:

    如文档所述,按顺序:

    要配置其他 swagger 文件的路径,您需要设置系统属性 micronaut.openapi.additional.files

    micronaut.openapi.additional.files 应添加为您的构建的系统属性,因为 OpenAPI 文档是在构建/编译时生成的,并且不在运行时,因此将此属性添加到application.yml(运行时)配置将无效。

    分级:

    如果您使用的是 gradle,则可以添加此 micronaut.openapi.additional.files 属性:

    • 启动构建时到命令行系统属性

      $ ./gradlew build -Dmicronaut.openapi.additional.files=src/main/resources/swagger
      
    • 到您的项目gradle.properties,从而避免在每次构建时添加系统属性

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

    马文:

    如果您使用的是 maven,则可以添加 micronaut.openapi.additional.files 属性:

    • 到命令行系统属性以及启动构建时:

      $ mvn clean compile -Dmicronaut.openapi.additional.files=src/main/resources/swagger
      
    • 到您的项目描述符 pom.xml 作为项目属性,从而避免在每次构建时添加 系统属性

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

    旁注

    请注意,在两个构建工具配置中,micronaut.openapi.additional.files 属性指向的是目录路径 (src/main/resources/swagger) 而不是文件路径,因为文档没有提到该属性将目录而不是显式文件作为其值。

    据我所知,附加文件不支持securitySchemes 声明,只会合并paths 文档。但我可能错过了一些细节,否则请随时在 micronaut-openapi 存储库中fire up an issue

    【讨论】:

    • 感谢我厌倦了 options.forkOptions.jvmArgs
    • 嘿@SanJaisy,请您更新您的线程以提及编辑帖子答案以允许增量信息更新。请您也添加您的编译输出吗?
    • 您是否也记录了我关于 * securitySchemes* 的内容?据我所知,答案应该是可以接受的,因为问题在于您的 yaml 文件内容。
    • 嗯,我指的是editor.swagger.io。我需要合并安全架构,请您指导我如何做到这一点。
    【解决方案2】:

    这对我有用,试试这个:

    第一步:在根目录下创建一个名为openapi的文件夹。

    第 2 步:然后在自己的 openapi 文件夹中手动创建您的 yml,并根据 (OpenAPI specification) 在文件中提及您的 schemas

    第 3 步:现在将两个文件与generated OpenAPI definition 合并。您需要指向 Micronaut 以在 openapi 文件夹中查找其他 OpenAPI yaml 文件。所以,你需要设置属性 micronaut.openapi.additional.files

    将 micronaut 指向 openapi 文件夹:

    第 1 步:在根目录中查找 openapi.properties 文件。如果文件不存在,则创建一个。

    第 2 步:一旦我们将文件粘贴到文件中 -> micronaut.openapi.additional.files=openapi

    确认:在此过程之后确认 micronaut 是否实际上正在合并文件。在服务器启动时注意日志...

    如果该过程成功,您应该能够看到这些:-

    Note: Merging Swagger OpenAPI YAML files from location: whateverDirectory/openapi
    Note: Reading Swagger OpenAPI YAML file YourFileName.yml
    

    【讨论】:

      猜你喜欢
      • 2015-08-15
      • 2017-11-22
      • 2019-07-15
      • 2022-09-28
      • 1970-01-01
      • 1970-01-01
      • 2017-08-21
      • 2018-07-25
      • 1970-01-01
      相关资源
      最近更新 更多