当前位置: 首页 > 知识库问答 >
问题:

生成API的最佳方式是招摇过市?i、 e.codegen vs swagger编辑器(Spring Boot API)

范霄
2023-03-14

我正在开发一个有点传统的API(Spring Boot)——它使用的是openapi 2.0版,它还使用pom中的swagger-codegen-maven插件插件。xml。

我最近参加了一个领英学习课程,我们使用斯瓦格编辑器(本地使用Docker)编写api规范(openapi 3.0),并用您选择的任何语言“导出”服务器存根,在这种情况下JavaSpring。我注意到Controller实现的API类已经在这个存根中生成了。然而,当使用swagger-codemen-maven-plugin时,这些接口直到编译项目(mvn安装)才会生成,这与您定义的任何数据结构的模式相同,例如,在swagger yaml的定义部分中的请求体。

我想询问构建API的首选方法是什么——是通过web GUI使用Swagger编辑器,还是本地使用,然后用YAML编写规范,然后用您选择的语言/框架导出服务器存根,还是在本地手动编写一些类(即使您添加了swagger yaml,看起来仍然需要为控制器等编写代码。使用此方法,如果我错了,请纠正我)即IntelliJ使用Spring,然后将swagger codegen maven插件添加到您的项目中,并让它为您生成接口/具体类?

共有1个答案

刘明朗
2023-03-14

我更喜欢使用Maven插件。

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

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

这里是maven插件配置的完整列表,您可以在这里找到特定于Spring的选项。据我所知,使用Swagger web生成器,您无法配置任何内容。

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

 类似资料:
  • 我通过swagger编辑器手动创建了YAML文件(分别为JSON文件)。 现在我想将swagger编辑器工具中很酷的自动生成页面嵌入到我的网站中,以便用户可以实时阅读和测试它(通过“尝试此操作”按钮)我的API。 我不希望swagger为我生成任何代码,也不需要它自动更新文档(YAML或任何东西)。只要需要,我就会手动更新静态YAML/JSON文件。斯威格支持这种功能吗?它是否与swagger编辑

  • 我试图在我的微服务项目中生成一个单独的招摇过市,在Api网关中将所有服务招摇过市聚合成一个单独的招摇过市。为了实现这一点,我将遵循下一个教程https://objectpartners.com/2017/09/28/aggregate-services-into-a-single-swagger 这里的问题是,当我尝试设置绝对URL时,我收到的输出是未能加载API定义。未定义的http://loc

  • 我的pom.xml 招摇过市配置 服务器日志 它说映射: 但这些都不起作用(404): 如果我使用sping-fox较低版本,那么我将在我的日志中得到它已映射{[/v2/api-docs}],方法=[GET]。但是,我看不到在那里生成的任何json。

  • 我刚刚开始使用Swagger Editor/OpenAPI 3规范,所以到目前为止还不太好。我已经在本地机器上安装并运行了Swagger Editor v.3.15.2。 这是我到目前为止的yaml: 它显示了这个错误: 我已经确保我对所有缩进使用两个空格。当我从编辑器复制yaml并将其放入记事本时,它看起来很好。我还将其粘贴到另一个编辑器中,注意到它只使用换行符而不是回车。我更新了它以使用两者,

  • 我正在构建一个API,在这里我有几个endpoint,我需要用户ID,所以在从这篇文章中投票最多的答案(而不是被接受的答案)中得到想法后:ASP。NET MVC将对象从自定义操作筛选器传递到操作。 我创建了一个动作过滤器,我可以用属性来设置它。 所以我基本上是通过这个操作过滤器获得用户ID,它通过这样的方式从授权头获得: 唯一的问题是,现在它在我的Swagger文档中将参数显示为必需的参数(我根本

  • 我正在开发一个RESTfull web服务,它使用swagger和swagger-codegen-maven插件来创建模型、控件和api类(这是与spring annotatios的接口)。 pom中的插件。xml是下一个: 当我想要创建一个新的控制器类(它不同于Swagger创建的控制器类)时,它实现了api类和方法的签名,但是,该类不会在方法的参数中写入注释(例如:@RequestParam、