当前位置: 首页 > 知识库问答 >
问题:

为什么openapi生成器会创建InlineObject?

郗奇玮
2023-03-14

我正在使用

https://github.com/OpenAPITools/openapi-generator

为我的应用编程接口创建一个客户端。它基本上工作正常,但是生成器创建了许多InlineObject类型,这些类型封装了包括任何复杂性类型的参数,例如DictionalIFormFileStream

例如

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)中?我该怎么修?这打破了我使用旧版本生成的客户端的一堆工具。

共有1个答案

钮长恨
2023-03-14

内联对象是从内联模式创建的,例如。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生成器为内联模式自动生成模型,可以单独定义模型(示例),并使用$ref:

        application/json:
          schema:
            $ref: '#/components/schemas/Pet' 
 类似资料:
  • 有ManyToOne链接的表。每个学生被分配一个方向从教育方向。当我创建学生时,所选方向被重新创建。为什么在创建学生时创建方向? 学生: 教育方向: 学生道:

  • 我正在使用和从yaml文件生成java服务器API,如下所示: 我遇到的问题是,生成的代码试图导入一个不存在的类。API应该接受pet类型的对象并返回相同的pet。宠物应该是猫、狗或蜥蜴。我使用了openapi规范中的继承示例,并从中构建了以下yaml文件: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.

  • 我正在创建一个需要一组玩家的应用程序。我使用团队ID作为每个球员的团队主键和外键。在一个片段中,我创建了一个新团队。创建团队并将其添加到我的房间数据库时,它最初的ID为0或未设置,即使我已将“自动生成”设置为true。然后,我导航到团队花名册视图,该视图能够向团队添加新球员。当我创建新玩家并在团队视图模型中使用新团队ID时,团队ID仍然为0或未设置,因此应用程序崩溃,外键约束失败。崩溃后,如果我重

  • **代码:(类名已重命名)** 两个版本中的CheeseDTO YAML: 使用springdoc-openapi-ui 1.3.9,我的yaml是这样生成的: 昂首阔步3注释: OpenAPi生成器maven插件 有没有办法用springdoc-openapi-ui>1.4.0生成?我必须更改我的大摇大摆的注释或更改我的java生成器吗?

  • 我们有一个openapi文件(已验证),用于声明响应头,例如。 使用openapi生成器项目(maven或cli)生成的java webclient客户端,调用的返回类型不包括响应头,ApiClient类中的invokeAPI方法也不允许访问响应头。实际上,ApiClient invoke方法返回的是返回类型的Mono/Flux,因此不允许获取响应头 据我所知,使用Spring Webclient

  • 我使用的是openapi生成器maven-plugin 使用<代码> 在我的yaml服务定义文件中,描述我的REST操作(XML消息)。我有这样一个模式: 以及定义的服务: 我生成客户端代码。但是当我使用它时,发送到超文本传输协议请求的XML使用