如何在swagger body参数中定义平面对象结构

时间:2016-02-17 19:56:38

标签: swagger swagger-2.0

我使用swagger 2.0并需要定义发布请求以创建帐户对象。对象数据作为平面对象结构在主体中传递:

身体数据示例:

{
  first_name: "Sherlock",
  last_name: "Holmes",
  address: "Bakerstreet 221b",
  # tax_id: not set, # optional
}

当我在yaml中创建请求文档时:

definitions:
  new_account:
    properties:
      first_name:
        type: string
      last_name:
        type: string
      address:
        type: string
      tax_id:
        type: string
    required:
      - first_name
      - last_name
      - address
paths:
  /accounts:
    post:
      summary: Create account
      parameters:
        - name: account
          in: body
          schema:
            $ref: "#/definitions/new_account"

文档描述了一个只有一个元素的主体:account,它本身包含一些字段。但是我的结构是扁平的,没有顶部节点account

如果我省略name属性,它基本上是相同的,只是在结果文档中名称列为空,整个结构是否需要。

我目前的解决方法是列出所有参数并设置in: query,但这显然是错误的。

如何定义?

1 个答案:

答案 0 :(得分:3)

account只是body参数的名称。一种用法是Swagger Codegen生成的API客户端中的方法签名。换句话说,account不是顶级节点(FYI,在Swagger规范1.2中,body参数必须命名为body

您上面的定义对于您提供的示例正文数据是正确的。