问题标签 [swagger-codegen-maven-plugin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2593 浏览

swagger - 如何使用 swagger 3.x 从源注释生成 OAS yaml 文件?

我花了几个小时搜索如何在 Java 中使用 swagger codegen 生成 OAS 规范 yaml 文件,但我放弃了。我想在 Java 源代码中提供所有 API 规范数据作为代码注释。通过 maven 公开它会很棒。

AFAIK 我应该使用swagger-codegen-maven-plugin,但我无法让它扫描源代码以生成 OAS yaml 或 JSON 文件。

我会很欣赏 pom.xml 的片段,其中包含有效的 codegen 插件配置。

也许我应该回到之前的 Swagger,因为这个用例在 2.x 中是直接处理的。现在我对 3.x 方法感到沮丧。

0 投票
1 回答
1764 浏览

swagger - OAS3 的 Swagger 代码生成器

我正在尝试将 Swagger Codegen 用于我的 OAS3 项目。我已经克隆了 swagger-codegen 分支 3.0.0。当我运行生成命令时,出现以下错误:

Codegen 是否支持 openapi 3.0.1?如果是,我错过了什么?

更新 - Yaml 文件和 codegen 命令

Petstore.yaml 文件:

代码生成命令:

0 投票
0 回答
551 浏览

java - 如何在 Swagger Codegen Maven 插件中使枚举字段可选?

TLDR:问题似乎在于,当它是枚举时,swagger 字段应该是强制性的(与 java 枚举字段不同)。我想知道是否有办法让它成为可选的

我正在使用 swagger 从 yaml 文件中生成一些集成 api

(默认情况下,插件中使用 Gson 实现来处理 json)

在一个 yaml 文件中,我有一个请求描述,其中包含一个这样描述的字段

或例如查看文档

为此,swagger 生成公共静态类适配器(默认情况下,插件中使用 Gson 实现来处理 json,因此此适配器扩展了 com.google.gson.TypeAdapter)。并且此实现禁止将此字段留空(否则在运行时 NPE 失败)。

我想允许所有 yaml 文件的可选枚举字段,或者至少允许指定的枚举字段。

提前致谢

0 投票
1 回答
1011 浏览

spring - 带有路径变量和请求参数的 Swagger codegen maven 插件 OpenApi 产生不工作的代码

我正面临一个大摇大摆的代码生成生成存根的问题。我有 2 项服务。首先使用路径 var 和请求参数的两种方法公开 REST api:

有 2 个端点具有相同的 URL 但参数不同。Spring-web 框架适用于此。接下来,我生成 OpenApi json 并获得 2 条路径:

然后,我尝试使用 swagger-codegen-maven-plugin 存根为该端点生成,然后我遇到了问题。

线程“main”java.lang.IllegalArgumentException 中的异常:Map 没有 '?login' 的值

这种形式的 URL 在生成的类中是硬编码的。

由于 uriVariables 中缺少登录映射键值而引发异常。

0 投票
0 回答
29 浏览

java - Java 代码生成中用于包的 Swagger-CodeGen 标记

我正在使用 Swagger Maven 插件 ( GitHub )。是否有可能,CodeGen 本身或 Swagger 的另一个工具在 YAML 文件中添加一个标记来决定类应该去哪个包?

或者反过来是否可以在不创建新模板的情况下更改生成代码的包结构?

0 投票
0 回答
256 浏览

mustache - Mustache 文件:将对象数组转换为逗号分隔值列表

我正在尝试使用小胡子文件使用 swagger codegen 工具生成我的 API(maven 插件:https ://github.com/swagger-api/swagger-codegen/tree/master/modules/swagger-codegen-maven- plugin ) 我已经创建了 .mustache 文件,并且从我的 .yaml 文件中生成了以下值:

我目前正在尝试将其写入 .mustache 文件中:

问题是我有一个尾随逗号,一旦生成文件,就会导致编译失败。有谁知道摆脱最后一个逗号的方法?

0 投票
2 回答
586 浏览

swagger-codegen - Swagger-codegen-maven:更改文件的生成位置

我目前正在通过 maven 插件使用 swagger-codegen:https ://github.com/swagger-api/swagger-codegen/tree/master/modules/swagger-codegen-maven-plugin 。<apiPackage></apiPackage>我已经使用pom.xml 中的字段设置了我希望生成 api 文件的位置。但是当我生成我的 api 时,它会被放入src/main/java/<apiPackage>. 我想知道在哪里src/main/java声明为路径的一部分以及是否可以更改。

0 投票
0 回答
1091 浏览

java - swagger-codegen-maven-plugin 生成接口实现,即使使用了选项 interfaceOnly = true

我想使用 swagger-codegen-maven 插件 3.0.16 为我的 API 生成 JAX-RS 服务器存根,但我想使用我自己的服务实现类,而不是生成的那个。在我的配置中,我指定了配置选项 interfaceOnly = true 但它不起作用

我当前的 Maven 配置:

0 投票
0 回答
813 浏览

java - enunciate Enum with custom value or property

I am now encountering the problem when generating Enum with custom properties.

In Project A, i build a API-webservice. I use enunciate-maven-plugin (version 2.12.1) to generate swagger documentation from Java code. When enunciate-maven-plugin runs, it will output the swagger.json

Then in the project B which consumes the Project A API-webservice, I use swagger-codegen-maven-plugin (version 2.3.1) to generate Java code from the above swagger.json.

maven configuration in Project B:

Everything runs well, except the Enum. For example, I have enum

The generated swagger.json will be :

The enum values are not generated. I already tried the @JsonProperty like this: REF: https://github.com/stoicflame/enunciate/issues/653

And the output is not as expected:

How can i generate Enum documentation with both label and value ?

Any help is appreciated. Thank you.

0 投票
1 回答
2166 浏览

java - 如何使用 swagger-codegen 为 Java 生成具有不同控制器名称的 API?

swagger-codegen 根据路径名生成 APIControllers。

假设您的 swagger.yaml 中有这些路径:

/pet/findByStatus: /user/{userId} /store/inventory

然后 codegen 将生成 PetAPIController、UserAPIController、StoreApiController。

但我的 API 类似于:

/private/pet/findByStatus: /private/user/{userId} /public/store/inventory

所以我最终得到了两个主要控制器:PrivateAPI 和 PublicAPI

有没有办法避免这种情况?使用标签,或者只使用第二个路径词。

谢谢