【问题标题】:Generating Java classes for Request and Response objects from Yaml file从 Yaml 文件为 Request 和 Response 对象生成 Java 类
【发布时间】:2018-02-15 04:22:18
【问题描述】:

我们为我们的 API 规范创建了一个使用 Swagger editor 的 Yaml 文件,其中包括基本 URL、端点、请求、响应和标头信息等。现在我想为这些 API 实现 RESTful Web 服务。为此,我正在考虑从这个 Yaml 文件生成我的请求和响应 Java 类,并且正在寻找某种代码生成器,最好是我可以在我的 Maven 项目中使用的 maven 插件/依赖项。我遇到了这个rest client with swagger,它谈论使用swagger-codegen Maven plugin,但这是为了生成client,我相信它是关于生成客户端代码以使用这些RESTful API,但是我需要生成要使用的类用于服务实施。我将使用 Java 和 Spring 框架。

我的问题是,当我们拥有 Yaml 文件(使用 Swagger 编辑器创建的 API 规范)以及可以使用哪些代码生成工具/插件时,在 Java 中实现 RESTful Web 服务的最佳实践是什么。


编辑:刚刚遇到这个Server stub generator HOWTO,正在进一步研究它。

【问题讨论】:

  • 为什么不使用 swagger-codegen Maven 插件?正如您自己发现的那样-这将生成客户端代码-它将包含您在 swagger 规范中定义的请求和响应类?没有什么能阻止您在 REST 服务实现中使用这些类。顺便说一句,大多数情况下,人们首先编写 java 类并使用 swagger 注释来生成 swagger 文档,而不是相反 - 自己编写 java 代码,使用自动化生成规范(例如 swagger)。
  • 如果你想重构你的代码并自动反映在招摇中的变化,那就容易多了。想象一下,您想重命名/添加/删除一个文件,在您的响应中添加一个复杂的对象(例如,您想添加一个对象 X 的数组(列表),它本身有一个对象 Y 的列表,X 和 Y 有多个字段等.)。使用 IDE 重构等在代码库中进行这种更改比手动编写 swagger 并希望生成会做你想做的事情更容易(例如,swagger 在继承方面有多好?)。
  • @hovanessyan,我们已经有API规范作为通过Swagger编辑器创建的Yaml文件,所以需要使用它并且不能反转它。但是我使用 swagger-codegen maven 插件来生成我的类并仅使用它们。

标签: java rest web-services yaml swagger-codegen


【解决方案1】:

Swagger-codegen maven 插件是一个不错的选择,但我建议您使用jhipster 来生成您的 java 项目。它生成具有最新技术堆栈的项目,包括 spring 框架。您可以根据自己的情况选择API-First development。我用过,效率很高。你已经有了 Yaml 文件。将其放入src/main/resources/swagger/api.yml 并运行

    ./mvnw generate-sources

将生成所有 java 代码。

【讨论】:

  • 我已经有一个项目,它公开了一些肥皂服务,也使用了 Spring。我计划在同一个项目中为这些 REST 服务创建一个模块。在这种情况下,jhipster 仍然是一个不错的选择吗?
  • 我正在查看您提到的 Jhipster API-First 开发链接。我谈到运行./mvnw generate-sources 来生成代码,我不太清楚它用什么来生成代码?它是使用 Swagger-codegen maven 插件还是 Jhipster 提供的东西?
  • Jhipster 也使用 swagger 从 yaml 生成代码。但是 Jhipster 会生成额外的代码,如测试、弹簧配置、安全等。如果您是 jhipster 的新手,您需要先阅读设置部分。安装 jhipster 后,需要生成一个项目,然后将 yaml 文件放入项目中,然后运行 ​​./mvnw generate-sources
  • 谢谢 Mehmet,我会去 Jhipster 了解更多并尝试一下。
  • 嗨,Mehmet,当你运行./mvnw generate-sources 时,会创建哪些文件以及在哪里创建?因为我在我的应用程序目录中运行此命令,并且只在目录web\api\model 中创建文件,而在web/api/controller 中没有创建文件。非常感谢你。
猜你喜欢
  • 1970-01-01
  • 2021-09-05
  • 1970-01-01
  • 1970-01-01
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
  • 2018-02-27
  • 2016-11-13
相关资源
最近更新 更多