如何在 OpenAPI 3.0 中定义字节数组

Mic*_* Dz 9 java spring openapi openapi-generator

我正在将我的 API 从 Swagger 2.0 迁移到 OpenAPI 3.0。在 DTO 中,我有一个指定为字节数组的字段。DTO 的 Swagger 定义:

Job:
   type: object
   properties:
       body:
         type: string
         format: binary
Run Code Online (Sandbox Code Playgroud)

使用上面的定义,swagger 代码生成器生成一个接受byte[]数组作为主体字段的对象new Job().setBody(new byte[1])

将 API 定义转换为 OpenAPI 后,该对象的定义保持不变,但 openapi 代码生成器现在需要org.springframework.core.io.Resource而不是byte[]( new Job().setBody(org.springframework.core.io.Resource))。在我的代码中有一些地方我必须序列化 Job 对象,但它不再可能,因为Resource没有实现可序列化。

作为一种解决方法,我将类型更改为object

Job:
   type: object
   properties:
       body:
         type: object
Run Code Online (Sandbox Code Playgroud)

现在我必须将身体投射到String然后转换到byte[]任何地方,我宁愿byte[]像以前一样拥有类型。

如何指定类型为byte[]使用 OpenAPI 3.0?

小智 6

您必须设置类型:字符串和格式:字节

原始答案:当使用 swagger codegen 时得到 'List<byte[]>' 而不是简单的 'byte[]'