gpt4 book ai didi

java - Swagger 为默认响应正文生成太长的常量

转载 作者:行者123 更新时间:2023-11-30 05:52:13 25 4
gpt4 key购买 nike

基本上,需要使用 swagger-codegen-maven-plugin 生成有效的 Java8 模型和 Controller 类。

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

Swagger成功生成java模型和带注释的接口(interface),该接口(interface)包含默认响应正文,代表根模型及其所有子模型自动生成的 json 响应示例。其实这是一个问题:

对于每个数组字段,swagger 总是生成 2 个项目,每个项目的数组字段再生成 2 个子项目,依此类推,这会导致 java 中的字符串常量非常长。Swagger 生成这个字符串没有任何问题,但 java 编译器根本无法处理它并出现编译错误:constant string too long

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

是否有任何方法可以禁用默认正文生成或任何其他内容来控制生成的字符串长度?

自动生成的代码无法提交,因此无法手动修复生成的代码并在之后使用它。 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>

最佳答案

终于找到问题所在了。

诀窍是为响应添加示例部分,它会覆盖 swagger 中的默认示例生成。

swagger 生成器本身仍然存在一个问题 - 它无法为大型响应模型生成有效的 java 代码,并且仍然受到 java 常量字符串长度的限制。

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

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

关于java - Swagger 为默认响应正文生成太长的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53709183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com