基本上,需要使用 swagger-codegen-maven-plugin 生成有效的 Java8 模型和控制器类。
我有一个庞大的2.0规范,其中包含带有数组字段的模型定义,其中每个数组项又包含它自己的模型数组。
Swagger成功生成了Java模型和带注释的接口, 此接口包含默认响应主体,代表根模型及其所有子模型的自动生成的json响应示例。 其实这是一个问题:
对于每个数组字段,swagger始终会产生2个项目,每个项目的array字段又产生2个子项目,依此类推,这会导致java中的字符串常量很长。 Swagger可以毫无问题地生成此字符串,但是Java编译器根本无法处理它,并且会出现编译错误:常量字符串太长。
我试图找到一种减少模型数组中元素数量或完全禁用示例主体生成的方法。似乎没有明显的配置可以控制它。
有什么方法可以禁用默认主体生成或其他任何东西来控制生成的字符串长度吗?
无法提交自动生成的代码,因此无法手动修复生成的代码并在以后使用它。 swagger-codegen插件完成后,需要获取可编译的Java代码。
有用于生成源的codegen maven配置(已针对2.3.1和2.4.0版本进行测试):
<plugin>
<groupId>io.swagger</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<configOptions>
<sourceFolder>java</sourceFolder>
<dateLibrary>java8</dateLibrary>
</configOptions>
<generateSupportingFiles>false</generateSupportingFiles>
<addCompileSourceRoot>false</addCompileSourceRoot>
<generateApiDocumentation>false</generateApiDocumentation>
<generateApiTests>false</generateApiTests>
<generateModelDocumentation>false</generateModelDocumentation>
<generateModelTests>false</generateModelTests>
<ignoreFileOverride>${project.basedir}</ignoreFileOverride>
</configuration>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
答案 0 :(得分:1)
最后,我找到了问题。
诀窍是为响应添加示例部分,该部分将覆盖默认的示例生成方式。
swagger生成器本身仍然存在问题-它无法为大型响应模型生成有效的Java代码,并且仍然受Java常量字符串长度的限制。
工作响应规范部分如下所示:
responses:
200:
description: Some text
schema:
$ref: '#/definitions/Model'
examples:
stub: