提问者:小点点

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


我使用的是swagger 2.0,需要定义一个post请求来创建一个帐户对象。对象数据作为平面对象结构在主体中传递:

主体数据示例:

{
  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属性,它基本上是相同的,只是名称列在结果留档中为空,整个结构要么是必需的,要么不是。

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

如何定义这一点?


共1个答案

匿名用户

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

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