首页 > 解决方案 > 使用 swagger codegen 获取“列表”时' 而不是简单的 'byte[]'

问题描述

一个 byte[] 在 swagger 文件中被建模为一个byte[]. 当使用 swagger codegen 时,我们得到List<byte[]>的不是简单的byte[]

Swagger.json

"document": {
    "type": "array",
    "items": 
    {
        "type": "string",
        "format": "byte"
    }
}

pom.xml

<plugin>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-codegen-maven-plugin</artifactId>
    <version>2.3.1</version>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <inputSpec>${project.basedir}/src/main/resources/swagger.json</inputSpec>
                <language>java</language>
                <configOptions>
                   <sourceFolder>src/gen/java/main</sourceFolder>
                </configOptions>
            </configuration>
        </execution>
    </executions>
</plugin>

标签: swaggermaven-pluginswagger-codegen

解决方案


问题在于生成 swagger.json 文件,即 maven 插件 swagger-maven-plugin。byte[] 的正确 swagger.json 文件应如下所示:

"document": {
        "type": "string",
        "format": "byte"
 }

为了实现这一点,我们必须完全按照以下链接所示添加自定义 ModelConvertors: https ://github.com/kongchen/swagger-maven-plugin/issues/422

还要在项目 pom 文件中添加 ModelConvertors 标记,其中包含自定义模型转换器位置的路径。

注意:swagger-codegen-maven-plugin 没有变化。


推荐阅读