如何在 OpenAPI 3.0 中定义字节数组
How to define byte array in OpenAPI 3.0
我正在将 API 从 Swagger 2.0 迁移到 OpenAPI 3.0。在 DTO 中,我有一个指定为字节数组的字段。
DTO 的 Swagger 定义:
Job:
type: object
properties:
body:
type: string
format: binary
使用上面的定义,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
现在我必须将正文转换为 String
,然后在任何地方转换为 byte[]
,我宁愿像以前一样将类型设为 byte[]
。
如何使用 OpenAPI 3.0 将类型指定为 byte[]
?
您必须设置类型:字符串和格式:字节
原回答:when using swagger codegen getting 'List<byte[]>' instead of simply 'byte[]'
我正在将 API 从 Swagger 2.0 迁移到 OpenAPI 3.0。在 DTO 中,我有一个指定为字节数组的字段。 DTO 的 Swagger 定义:
Job:
type: object
properties:
body:
type: string
format: binary
使用上面的定义,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
现在我必须将正文转换为 String
,然后在任何地方转换为 byte[]
,我宁愿像以前一样将类型设为 byte[]
。
如何使用 OpenAPI 3.0 将类型指定为 byte[]
?
您必须设置类型:字符串和格式:字节
原回答:when using swagger codegen getting 'List<byte[]>' instead of simply 'byte[]'