如何根据给定的 openapi 3.0.3 yaml 文件生成 Quarkus Rest JX-RS 服务

San*_*dra 13 yaml openapi openapi-generator quarkus quarkus-rest-client

目前我正在使用 quarkus 开发一个应用程序。我有一个描述一切的 openapi yaml 文件。我想知道是否有 quarkus 扩展或工具可以用来生成可以生成和使用相同文件格式的其余端点。

ynt*_*ual 11

只要您不需要任何 Quarkus 特定功能(例如反应式、@Cached 等),那么 REST 端点就是标准 JAXRS 端点,您可以使用 openapi 生成器为您生成接口和模型 POJO。之后,您只需实现生成的接口:

openapi-cli generate -i url_or_path_to_your_api_schema.yml -g jaxrs-spec --skip-validate-spec --additional-properties=interfaceOnly=true,useSwaggerAnnotations=false
Run Code Online (Sandbox Code Playgroud)

上述命令将仅为 API 中定义的任何模型生成 JAXRS 端点接口和任何 POJO 类。您可以将它们复制到您的项目中并实施 iface。

您可以使用openapi 生成器插件将其集成到您的 Maven 构建中,而不是手动 cli 调用:

openapi-cli generate -i url_or_path_to_your_api_schema.yml -g jaxrs-spec --skip-validate-spec --additional-properties=interfaceOnly=true,useSwaggerAnnotations=false
Run Code Online (Sandbox Code Playgroud)

如果您喜欢的话,还有一个适用于 Quarkus 的完整项目存根生成器:(作为生成器的--library=quarkus选项jaxrs-spec

您可能希望配置OpenApi 生成器文档中描述的更多选项。您还可以自定义代码模板(小胡子),以防内置模板错过您需要的东西,尽管此时您可能会考虑创建自己的生成器。

如果您需要客户端并且可以接受标准 Microprofile REST 客户端方法,那么 Openapi 生成器也可以正常工作:

openapi-cli generate -i path_to_your_openapi_schema.yml -g java --library microprofile
Run Code Online (Sandbox Code Playgroud)

OpenApi 生成器是一个复杂的项目,并非没有问题,因此 Quarkus 社区最好为服务器和客户端代码生成器采用自定义优化工具,以充分利用所有功能,例如反应式客户端...


Ric*_*ini 6

我们目前正在开发官方 OpenAPI Generator 扩展:https://github.com/quarkiverse/quarkus-openapi-generator#readme

如果您有兴趣请看一下。我们很乐意听到社区的反馈。


loi*_*ieu 1

目前,Quarkus 内部没有官方扩展/工具来从 OpenAPI 文件生成 JAX-RS 存根。

不过,这已经在 Quarkus 开发者邮件列表上进行了讨论,您可以查看并提供反馈:https://groups.google.com/g/quarkus-dev/c/f8hJRm8oWbQ/m/UW_kQ7UEAwAJ

请注意,有一个用于 JAX-RS 的 OpenAPI 生成器,您可以使用它来生成兼容 JAX-RS 的端点,该端点只需在 Quarkus 中进行少量修改即可使用:https: //openapi-generator.tech/docs/generators /jaxrs-规范