生成 Swagger API 的最佳方式?即 codegen 与 swagger 编辑器 (Spring Boot API)

Best way to generate Swagger API? i.e. codegen vs swagger editor (Spring Boot API)

我正在开发一个有点遗留的 API(Spring 启动)- 它使用 openapi 2.0 版,它还使用 swagger-codegen-maven-plugin pom.xml.

中的插件

我最近做了一个 LinkedIn 学习课程,我们使用 Swagger Editor(本地使用 Docker)编写 api 规范(openapi 3.0)并“导出”您选择的任何语言的服务器存根,在本例中为 Java Spring。我注意到控制器实现 的 API 类 已经 生成在此存根中。但是,当使用 swagger-codegen-maven-plugin 时,这些接口在您编译项目 (mvn install) 之前不会生成,这同样适用于您定义的任何数据结构的模式,例如,您在swagger yaml 的“定义”部分。

我想询问这里构建 API 的首选方法是什么 - 是通过 Web GUI 使用 Swagger 编辑器还是在本地使用 Swagger 编辑器并在 YAML 中编写规范然后导出服务器存根language/framework of your choice OR是不是要在本地手动写一些类(即使你加了swagger yaml,看起来你仍然必须为控制器等编写代码。使用这种方法,如果我错了请纠正我)即 IntelliJ 使用 Spring,然后添加 swagger-codegen-maven-plugin添加到您的项目并让它为您生成interfaces/concrete类?

我更喜欢使用 Maven 插件。

在 Maven 生命周期的编译阶段生成服务器存根没有错:你 运行 它,你得到你的存根并开始使用它们。

Maven 插件的优点是您可以配置生成器的输出:例如,您可以设置包名称、模型名称的后缀或前缀,无论您只想生成接口还是存根实施。

这是 maven plugin configurations and here you can find Spring specific options 的完整列表。 据我所知,使用 Swagger 网络生成器,您无法配置任何内容。

使用 maven 插件时唯一要记住的是不要手动修改生成的代码,否则每次 运行 再次使用时,您将丢失手动更改。因此,您的实际实现代码将需要实现生成的 API 接口或扩展生成的 API 控制器。或者甚至更好地生成代码,将 delegatePattern 选项设置为 true,并实现生成的委托接口。