如何解决为什么 openapi-generator 会创建 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
中?我该如何解决?这破坏了我使用旧版本生成客户端的一堆工具。
解决方法
内联对象是从内联模式创建的,例如Slurm documentaion 是一个架构,其中为 MIME 类型 application/json
的有效负载内联定义了 2 个属性。
为了避免 OpenAPI Generator 自动为内联架构生成模型,可以单独定义模型 (https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/test/resources/3_0/inline_model_resolver.yaml#L15-L24) 并使用 $ref
代替:
application/json:
schema:
$ref: '#/components/schemas/Pet'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。