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

如何在swagger body参数中定义平面对象结构,swagger,swagger-2.0,Swagger,Swagger 2.0,我使用的是swagger 2.0,需要定义一个post请求来创建account对象。对象数据作为平面对象结构在主体中传递: 示例主体数据: { first_name: "Sherlock", last_name: "Holmes", address: "Bakerstreet 221b", # tax_id: not set, # optional } 在yaml中创建请求文档时: definitions: new_account: properties:

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

示例主体数据:

{
  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
,它本身包含一些字段。但是我的结构是扁平的,没有顶部节点
帐户

如果我省略了
name
属性,它基本上是一样的,只是结果文档中的name列是空的,整个结构要么是必需的,要么不是

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


如何定义它?

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


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

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


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

好的,谢谢。很高兴知道,因为从生成的文档来看,这对我来说并不明显。我宁愿列出所有最重要的元素,但如果这是正确的方式,我会选择它。因此,在《大摇大摆2》中,名称不必是
body
,而且似乎一点也不强制。如果我不使用它,它也是有效的,并且可能不会因为认为它是顶级节点名而混淆其他人。你说什么?回复我最后的评论。尽管swagger editor显示的参数列表没有名称,但它也显示了一个错误,即定义无效。看起来这不是一个选项,我必须使用
body
,这样才能避免混淆读者。好的,谢谢。很高兴知道,因为从生成的文档来看,这对我来说并不明显。我宁愿列出所有最重要的元素,但如果这是正确的方式,我会选择它。因此,在《大摇大摆2》中,名称不必是
body
,而且似乎一点也不强制。如果我不使用它,它也是有效的,并且可能不会因为认为它是顶级节点名而混淆其他人。你说什么?回复我最后的评论。尽管swagger editor显示的参数列表没有名称,但它也显示了一个错误,即定义无效。看起来这不是一个选项,我必须使用
body
,这样才能避免混淆读者。