是否有 Maven 插件可以从 swagger 端点生成客户端代码?
Posted
技术标签:
【中文标题】是否有 Maven 插件可以从 swagger 端点生成客户端代码?【英文标题】:Is there a Maven plugin to generate client code from a swagger endpoint? 【发布时间】:2021-11-17 03:08:30 【问题描述】:我需要使用另一个团队创建的 REST API。他们为我提供了一个 swagger-ui 端点。我正在用Java编码。我正在使用 SpringFramework。我正在寻找能够生成我可以实现的存根和架构类的东西。
【问题讨论】:
请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:Swagger Codegen 有一个Maven plugin。它可以生成 Spring 服务器存根和 Java 客户端 SDK。
Codegen 有两个版本,3.x 和 2.x。他们有不同的groupId
。
版本 3.x 用于 OpenAPI 3.0 定义 (openapi: 3.0.x
):
<plugin>
<groupId>io.swagger.codegen.v3</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>3.0.27</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>src/main/resources/api.yaml</inputSpec>
<language>java</language>
<configOptions>
<sourceFolder>src/gen/java/main</sourceFolder>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
版本 2.x 用于 OpenAPI 2.0 定义 (swagger: '2.0'
)。
<plugin>
<groupId>io.swagger</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>2.4.21</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>src/main/resources/api.yaml</inputSpec>
<language>java</language>
<configOptions>
<sourceFolder>src/gen/java/main</sourceFolder>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
对于受支持的 <language>
值,请将您的 OpenAPI YAML/JSON 文件粘贴到 https://editor.swagger.io 并检查“生成服务器”和“生成客户端”菜单中的值。
【讨论】:
我相信这个答案是为了从指定为 YAML 的 OpenAPI 生成服务器代码。我需要为一个客户端生成代码,我已经获得了一个招摇的 URL。 使用<language>java</language>
或任何你想要的输出目标。所有代码生成器都需要一个 OpenAPI YAML/JSON 文件作为输入,您可以将其从 Swagger UI 导出为explained here。
你明白我正在尝试从合作伙伴的 API 生成客户端。我将调用他们的 API。
<language>java</language>
生成一个 Java client SDK。 Codegen 可以生成服务器和客户端,输出取决于<language>
参数。一些语言值表示服务器,另一些表示客户端。以上是关于是否有 Maven 插件可以从 swagger 端点生成客户端代码?的主要内容,如果未能解决你的问题,请参考以下文章
Swagger Codegen Maven插件,带有路径变量和请求参数,OpenApi产生不起作用的代码
是否有任何 Maven 插件可用于从 Jhipster 中删除生成类的 getter/setter 并添加 lombok [关闭]