代码之家  ›  专栏  ›  技术社区  ›  user3007501

swagger为默认响应体生成太长的常量

  •  1
  • user3007501  · 技术社区  · 6 年前

    基本上,需要生成有效的 Java8 模型和控制器类 虚张声势的codegen maven插件 .

    我使用了swagger 2.0规范,其中包含带有数组字段的模型定义,每个数组项依次包含它自己的模型数组。

    SWAGER成功生成Java模型和注释接口, 此接口包含默认的响应体,表示根模型及其所有子模型的自动生成JSON响应示例。 实际上,这是个问题:

    对于每一个数组字段,昂首阔步总是为每个项的数组字段生成2个条目、2个以上的子字符串,从而导致Java中非常长的字符串常量。 SiggGER生成的字符串没有任何问题,但是Java编译器仅仅无法处理它,并随着编译错误而下降: 常量字符串太长 .

    我试图找到一种方法来减少模型数组中的元素数量,或者完全禁用示例体生成。似乎没有明显的配置来控制这个。

    有没有什么方法可以禁用默认的正文生成或其他任何东西来控制生成的字符串长度?

    无法提交自动生成的代码,因此无法手动修复生成的代码并在以后使用它。在SiggGeGoEGEN插件完成之后,它需要获得可编译的Java代码。

    有codegen maven config,用于生成源代码(测试了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>
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   user3007501    6 年前

    最后,我发现了问题所在。

    诀窍在于 实例 用于 响应 它覆盖了swagger中的默认示例生成。

    SiggGER生成器本身仍然存在一个问题——它不能为大型响应模型生成有效的Java代码,并且仍然受限于Java常量字符串长度。

    工作响应规范部分如下所示:

        responses:
         200:
          description: Some text
          schema:
           $ref: '#/definitions/Model'
          examples:
           stub: