如何从现有的SpringRESTAPI生成OpenAPI3.0YAML文件?

如何从现有的SpringRESTAPI生成OpenAPI3.0YAML文件?,spring,spring-boot,yaml,swagger,openapi,Spring,Spring Boot,Yaml,Swagger,Openapi,我有一个现有的SpringRESTAPI,我想为它生成OpenAPI3.0YAML文件,而不是Swagger 2.0JSON/YAML 因为到目前为止,SpringFox不支持YAML生成。它使用Swagger 2.0(遵循OpenAPI3.0规范)生成JSON 此外,也有,但它似乎不支持春季休息 我尝试了Kongchen spring maven插件,该插件能够生成YAML文件,但具有Swagger 2.0定义,并且没有打开API 3.0,如: swagger: "2.0"

我有一个现有的SpringRESTAPI,我想为它生成OpenAPI3.0YAML文件,而不是Swagger 2.0JSON/YAML

因为到目前为止,SpringFox不支持YAML生成。它使用Swagger 2.0(遵循OpenAPI3.0规范)生成JSON

此外,也有,但它似乎不支持春季休息

我尝试了Kongchen spring maven插件,该插件能够生成YAML文件,但具有Swagger 2.0定义,并且没有打开API 3.0,如:

swagger: "2.0"
info:
  description: "Test rest project"
  version: "1.0"
  title: "Some desc"
  termsOfService: "http://swagger.io/terms/"
  contact:
    name: "Rest Support"
    url: "http://www.swagger.io/support"
    email: "support@swagger.io"
  license:
    name: "Apache 2.0"
    url: "http://www.apache.org/licenses/LICENSE-2.0.html"
host: "example.com"
basePath: "/api/"
因此,我的问题是如何生成开放式API YAML文件,如:

openapi: 3.0.0
info:
  description: Some desc
  version: "1.0"
  title: Test rest project
  termsOfService: http://swagger.io/terms/
  contact:
    name: Rest Support
    url: http://www.swagger.io/support
    email: support@swagger.io
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
我目前正在使用
swagger-maven-plugin
生成带有swagger 2.0定义的YAML文件,并在

问题1:
SpringMaven插件能否捕获io.swagger.v3.oas.annotations来生成YAML

问题2:
在SpringMVC项目中使用开放API定义生成YAML的最佳方法是什么

问题3:

io.swagger.v3.oas
可以用于Spring项目还是仅用于JAX-RS项目?

我们最近使用了
springdoc openapi
java库。它有助于使用spring引导项目自动生成API文档

它自动将
swagger ui
部署到spring引导应用程序 文档将以HTML格式提供,使用官方[swagger ui jars]:

然后,可以在
http://server:port/context-path/swagger ui.html
和OpenAPI描述将在以下json格式的url中提供:
http://server:port/context-path/v3/api文档

  • 服务器:服务器名称或IP地址
  • 端口:服务器端口
  • 上下文路径:应用程序的上下文路径
文档也可以通过以下路径以yaml格式提供:
/v3/api docs.yml
。 将库添加到项目依赖项列表中(无需其他配置)


org.springdoc
springdoc openapi用户界面
1.2.3

我为此错过了一些库很久了。最后,我决定实现我自己的生成器,也许你也可以检查一下。它基于反射并支持javax和spring注释。它还基于Jackson注释生成继承模型(带有鉴别器)。此外,如果您想要改变生成过程(例如,当您有自己的注释并且需要调整模式的生成部分时),您可以定义自己的拦截器。 您可以在运行时模式下使用它,也可以将其用作maven插件。
还有生成模型的OpenAPI3到java客户机生成器。同样,它也会生成Javax注释和Jackson注释以实现正确的继承。

这可能会有所帮助,即从现有的openapi YAML文件生成代码存根。我的问题是如何做到反之亦然。你能解决这个问题吗?我还在寻找一种为我的Spring Boot项目生成YAML文件的方法。@Alig这个问题本身就有解决方法来实现这一点。虽然还没有直接的方法。我们将不得不等到SpringFox 3.0.Use发布后才能将Swagger 2文档转换为OpenAPI 3.0规范。这确实是一项伟大的工作!SpringFox 3.0:pHi已经等了很久了,所有文档都与spring boot一起使用有关,没有spring boot的spring rest应用程序呢?路径应该是
/v3/api docs.yaml
。你上面有个拼写错误。太好了!可以摆脱添加SpringFox。大摇大摆annotation@NunoSilvaSpringdoc在没有Spring引导的情况下与SpringMVC完美结合。
 <dependency>
      <groupId>org.springdoc</groupId>
      <artifactId>springdoc-openapi-ui</artifactId>
      <version>1.2.3</version>
  </dependency>