0

如果我有以下示例,其中定义通过组合Settings嵌入:Thing

definitions:
  Settings:
    properties: 
      foobar:
        type: number 
        format: double
      boofar:
        type: string 
  Thing:
    properties:
      allOf:
        $ref: '#/definitions/Settings'
      name:
        type: string

如果我在 editor.swagger.io 中定义一个 POST 方法Thing,它最终会构建如下所示的 JSON:

{
  settings: {
    foobar: 1,
    boofar: "text here"
  },
  name: "some name"
}

我想嵌入一个带有组合的模型定义,但没有额外的嵌套属性定义——这可能吗?这是我想要的 JSON 结构Thing

{
  foobar: 1,
  boofar: "text here",
  name: "some name"
}

有没有办法做到这一点?

4

1 回答 1

1

您的示例并没有真正使用组合作为allOf属性。

allOf应该在定义的根目录上,它是一个模式数组(引用或内联)。

allOf这是用于您的示例的正确方法:

招摇:'2.0'信息:标题:API版本:1.0.0

paths: 
  /thing:
    get:
      responses:
        200:
          description: OK
          schema:
            $ref: '#/definitions/Thing'

definitions:
  Settings:
    properties: 
      foobar:
        type: number 
        format: double
      boofar:
        type: string 
  Thing:
    allOf:
      - $ref: '#/definitions/Settings'
      - properties:
          name:
            type: string

SwaggerUI 中的结果渲染:

在此处输入图像描述

于 2016-05-16T18:54:31.527 回答