如何解决合并架构大摇大摆的 UI Micronaut 附注
我正在尝试合并 micronaut swagger 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文件中,这些配置都没有,我觉得是在build过程中没有选择文件,我们如何设置附加文件的路径
来自 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
包括上面的定义合并了配置,但是在最终文档中clientId、clientSecret和usePkceWithAuthorizationCodeGrant没有合并,为什么? >
解决方法
如文档所述,按顺序:
要配置其他 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 作为项目属性,从而避免在每次构建时添加 System 属性:
<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。
这对我有用试试这个:
步骤 1:在根目录中创建一个名为 openapi
的文件夹。
第 2 步:然后在 openapi 文件夹中手动创建您的 yml,并根据 schemas
在文件中提及您的 (OpenAPI specification)
。
第 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。