当使用 swagger codegen 获取 'List<byte[]>' 而不是简单的 'byte[]' 时

use*_*400 7 maven-plugin swagger swagger-codegen

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

Swagger.json

"document": {
    "type": "array",
    "items": 
    {
        "type": "string",
        "format": "byte"
    }
}
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

use*_*400 9

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

"document": {
        "type": "string",
        "format": "byte"
 }
Run Code Online (Sandbox Code Playgroud)

为了实现这一点,我们必须添加自定义模型转换器,如下链接所示: https: //github.com/kongchen/swagger-maven-plugin/issues/422

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

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