【发布时间】: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