为什么 openapi-generator 创建 InlineObjects?
Why does openapi-generator create InlineObjects?
我正在使用
https://github.com/OpenAPITools/openapi-generator
为我的 API 创建一个客户端。它大部分工作正常,但是生成器创建了很多 InlineObject
类型来封装参数,这些参数包括任何复杂的类型,例如 Dictionary
、IFormFile
、Stream
例如,
public async Task<ApiResponse<FileUploadResponseAPIModel>> MyApiClientMethod(InlineObject11 inlineObject11 = default(InlineObject11))
{
}
其中 InlineObject11 定义为
public partial class InlineObject11 : IEquatable<InlineObject11>, IValidatableObject
{
[JsonConstructorAttribute]
protected InlineObject11() { }
public InlineObject11(Stream rebalanceTradeFile = default(Stream))
{
// to ensure "rebalanceTradeFile" is required (not null)
this.RebalanceTradeFile = rebalanceTradeFile ?? throw new ArgumentNullException("rebalanceTradeFile is a required property for InlineObject11 and cannot be null");
}
[DataMember(Name = "RebalanceTradeFile", IsRequired = true, EmitDefaultValue = false)]
public System.IO.Stream RebalanceTradeFile { get; set; }
这有什么意义?为什么不生成客户端以获取 Stream rebalanceTradeFile
而不是将其包装到 InlineObject
中?我该如何解决?这破坏了我的一堆使用旧版本生成的客户端的工具。
内联对象是从内联模式创建的,例如https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/test/resources/3_0/inline_model_resolver.yaml#L15-L24 是一个架构,其中为 MIME 类型 application/json
.
的负载定义了 2 个内联属性
为避免 OpenAPI 生成器自动为内联模式生成模型,可以单独定义模型 (example) 并改用 $ref
:
application/json:
schema:
$ref: '#/components/schemas/Pet'
我正在使用
https://github.com/OpenAPITools/openapi-generator
为我的 API 创建一个客户端。它大部分工作正常,但是生成器创建了很多 InlineObject
类型来封装参数,这些参数包括任何复杂的类型,例如 Dictionary
、IFormFile
、Stream
例如,
public async Task<ApiResponse<FileUploadResponseAPIModel>> MyApiClientMethod(InlineObject11 inlineObject11 = default(InlineObject11))
{
}
其中 InlineObject11 定义为
public partial class InlineObject11 : IEquatable<InlineObject11>, IValidatableObject
{
[JsonConstructorAttribute]
protected InlineObject11() { }
public InlineObject11(Stream rebalanceTradeFile = default(Stream))
{
// to ensure "rebalanceTradeFile" is required (not null)
this.RebalanceTradeFile = rebalanceTradeFile ?? throw new ArgumentNullException("rebalanceTradeFile is a required property for InlineObject11 and cannot be null");
}
[DataMember(Name = "RebalanceTradeFile", IsRequired = true, EmitDefaultValue = false)]
public System.IO.Stream RebalanceTradeFile { get; set; }
这有什么意义?为什么不生成客户端以获取 Stream rebalanceTradeFile
而不是将其包装到 InlineObject
中?我该如何解决?这破坏了我的一堆使用旧版本生成的客户端的工具。
内联对象是从内联模式创建的,例如https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/test/resources/3_0/inline_model_resolver.yaml#L15-L24 是一个架构,其中为 MIME 类型 application/json
.
为避免 OpenAPI 生成器自动为内联模式生成模型,可以单独定义模型 (example) 并改用 $ref
:
application/json:
schema:
$ref: '#/components/schemas/Pet'