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

为什么模式从其子模式继承数组项的示例?

彭宜人
2023-03-14

OpenAPI 3.0.0,Swagger在线编辑器。

我通过< code>allOf鉴别器编写了子模式,并为结果模式设置了< code>example字段。然而,Swagger UI并没有按原样提供这个例子。

该模式包含一个源自子模式的数组。数组从子模式继承了示例项,并使用模式中的示例扩展了列表。

假设我们有两个模式:

Cats:
  type: object
  properties:
    cats:
      type: array
      items:
        type: object
        properties:
          fluffiness:
            type: integer
          names:
            type: string
  example:
    cats:
      - fluffiness: 9
        names: "Felix"
      - fluffiness: 10
        names: "Neko"
        

FluffiestCats:
  allOf:
    - $ref: '#/components/schemas/Cats'
    - type: object
      properties:
        date:
          type: string
          format: "date"
  example:
    cats:
      - fluffiness: 10
        names: "Luna" 
      - fluffiness: 10
        names: "Meowie"
    date: "17-01-2021"

响应某些请求,API检索fluffiest猫,引用<code>#/components/schema/Fluffiestcat/</code>。Swagger UI生成以下响应示例。

json prettyprint-override">{
  "cats": [
    {
      "fluffiness": 9,
      "names": "Felix"
    },
    {
      "fluffiness": 10,
      "names": "Neko"
    },
    {
      "fluffiness": 10,
      "names": "Luna"
    },
    {
      "fluffiness": 10,
      "names": "Meowie"
    }
  ],
  "date": "17-01-2021"
}

Swagger UI从子模式示例项中获取两个示例。提供的示例不会覆盖子模式示例。

  1. 此行为是否与规范相矛盾?根据描述,与参数对象的示例字段相反,架构对象的示例字段似乎并不意味着覆盖。
  2. 如何覆盖子序列示例?还是我必须在不使用 allOf 的情况下重新创建架构?
  1. 如何在OpenAPI 3中引用数组项示例?
  2. OpenAPI 3.0.0 规范

共有1个答案

海鸣
2023-03-14

这是Swagger UI的问题。

在 Swagger UI 4.5.0 和 Swagger Editor 4.0.7 中修复。

 类似资料:
  • 问题内容: 我已经使用具有继承性的Java绑定搜索了json模式,并且所有搜索都导致我使用“ allOf”。 使用allOf可能会解决我的问题,但我想知道json模式中是否有可以使用的构造,该构造将生成具有真实Java继承“ B扩展A”的Java代码- 而不是在B内插入A的所有属性? 我想知道这是否被支持/可行,或者我只是在做梦。如果不支持,我很想知道原因。 问题答案: 好吧,我是两者的作者: 当

  • 本文向大家介绍JavaScript继承模式粗探,包括了JavaScript继承模式粗探的使用技巧和注意事项,需要的朋友参考一下 真正意义上来说Javascript并不是一门面向对象的语言,没有提供传统的继承方式,但是它提供了一种原型继承的方式,利用自身提供的原型属性来实现继承。Javascript原型继承是一个被说烂掉了的话题,但是自己对于这个问题一直没有彻底理解,今天花了点时间又看了一遍《Jav

  • 我会用Python编写 方法解析顺序决定了应该首先检查哪个父类的方法/属性,所以我可以判断Pet.age是NewPet.age还是OldPet.age。 那幺如果我让Pet同时从NewPet和OldPet继承,其中name属性在两个模式中都定义了,每个模式中都有不同的值,会怎么样?宠物名是什么? 老宠物会优先吗?新宠物?是否未定义/无效?它是应用程序定义的吗? 我在《大摇大摆的编辑》中试过这个。显

  • 你更喜欢/建议哪一个?

  • 问题内容: 我的对象层次结构随着继承树的加深而增加了复杂性。这些都不是抽象的,因此,它们的所有实例都或多或少地达到了目的。 由于参数数量很多,我想使用“构建器模式”来设置属性,而不是对多个构造函数进行编码。由于我需要适应所有排列,因此继承树中的叶类将具有伸缩构造函数。 当我在设计过程中遇到一些问题时,我已经浏览了这里的答案。首先,让我给您一个简单的,简短的示例来说明问题。 现在我们有一些代码可以继

  • 由于无法解析最后一个链接调用,未定义方法,因此此调用将不会编译。所以这种方式要求所有调用都以特定的顺序链接起来,这是非常不切实际的,特别是对于一个深度层次结构树。 现在,在我寻找答案的过程中,我遇到了一个Java Builder类的子类,它建议使用奇怪的递归泛型模式。但是,由于我的层次结构不包含一个抽象类,所以这个解决方案对我不起作用。但是这种方法依赖于抽象和多态性来发挥作用,这就是为什么我不相信