Swagger 2.0中的条件参数重复键

问题描述

翻译为宠物多态性示例:

因此,有多个请求要传递取决于宠物类型的参数。如果参数始终相同:没问题。我可以生成文档,并获得一个带有不同参数的值cat / dog的下拉菜单。 但是在下一步中,我需要为每个请求使用不同的参数。因此,不仅定义了“猫与狗的宠物”的定义,还定义了例如“猫和狗”具有不同参数的WildAnimal。

  • 如果我为“猫”和“狗”创建了多个定义,则会出现“重复键”错误。
  • 如果我将第二组“猫”和“狗”重命名为“ WildCat”和“ WildDog”,则petType字符串也将更改为“ WildCat”和“ WildDog”。
  • 如果我尝试创建“动物”之类的“超定义”,并使用不同类型的动物(如“宠物”和“野生动物”)继承allAll的所有参数,则我不知道将鉴别符放在何处。如果在超级定义中,则在下拉菜单中会获得“ Pet”和“ WildAnimal”作为其他petType。

我找不到内联对cat / dog的几个定义的可能性。我找不到将WildCat和WildDog的“显示名称”更改为Cat和Dog的可能性(因此,定义名称将与实际的petType值不同)。我在这里几乎没有想法。

其他信息:我无法转换为3.0,因为我需要在GET请求中使用requestBody(不是通过选择)。

  Pet:
    type: object
    discriminator: petType
    properties:
      name:
        type: string
      petType:
        type: string
    required:
    - name
    - petType
  Cat:
    description: A representation of a cat
    allOf:
    - $ref: '#/definitions/Pet'
    - type: object
      properties:
        huntingSkill:
          type: string
          description: The measured skill for hunting
          default: lazy
          enum:
          - clueless
          - lazy
          - adventurous
          - aggressive
      required:
      - huntingSkill
  Dog:
    description: A representation of a dog
    allOf:
    - $ref: '#/definitions/Pet'
    - type: object
      properties:
        packSize:
          type: integer
          format: int32
          description: the size of the pack the dog is from
          default: 0
          minimum: 0
      required:
      - packSize

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)