目前我正在使用 quarkus 开发一个应用程序。我有一个描述所有内容的 openapi yaml 文件。我想知道是否有 quarkus 扩展或工具,我可以使用它们生成将产生和使用相同文件格式的其余端点。
3 回答
只要您不需要任何 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
上面的命令将只为 API 中定义的任何模型生成 JAXRS 端点接口任何 POJO 类。您可以将它们复制到您的项目并实现 iface。
您可以使用openapi 生成器插件将其集成到您的 Maven 构建中,而不是手动调用 cli :
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/yourapi.yaml</inputSpec>
<generatorName>jaxrs-spec</generatorName>
<additionalProperties>interfaceOnly=true,useSwaggerAnnotations=false</additionalProperties>
<configOptions>
<sourceFolder>src/gen/java/main</sourceFolder>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
如果您喜欢的话,还有一个完整的 Quarkus 项目存根生成器:(作为生成器的--library=quarkus
选项jaxrs-spec
)
在OpenApi 生成器的文档中,您可能希望配置更多选项。您还可以自定义代码模板(小胡子),以防内置模板遗漏您需要的东西,尽管此时您可能会考虑创建自己的生成器。
如果您需要一个客户端并且您可以使用标准的 Microprofile REST 客户端方法,那么 Openapi 生成器也可以正常工作:
openapi-cli generate -i path_to_your_openapi_schema.yml -g java --library microprofile
OpenApi 生成器是一个复杂的项目,并非没有问题,因此最好 Quarkus 社区为服务器和客户端代码生成器采用自定义优化工具,以充分利用所有功能,例如反应式客户端......
目前,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 规范
我们目前正在开发官方的 OpenAPI Generator 扩展:https ://github.com/quarkiverse/quarkus-openapi-generator#readme
如果您有兴趣,请看一看。我们很乐意听取社区的反馈。