如何在Swagger UI中显示body参数的嵌套数组示例?

时间:2018-11-30 15:39:05

标签: swagger swagger-ui swagger-2.0

我的POST方法主体中有一个嵌套数组作为参数:

 parameters:
 - in: body
   name: matrix
   description: blabla
   schema:
     type: array
     items:
       schema:
         type: array
         items:
           schema:
             type: double

我想为此数组添加一个示例,使其在Swagger UI中可见。我尝试了以下操作,但是似乎不起作用-正文字段中没有显示任何示例。如果我在Swagger UI的body字段中手动输入[[1.0, 2.0],[3.0, 4.0]],则效果很好。

 parameters:
 - in: body
   name: matrix
   description: blabla
   schema:
     type: array
     items:
       schema:
         type: array
         items:
           schema:
             type: double
   example: [[1.0, 2.0],[3.0, 4.0]]

更新:实施了海伦的建议后,外观如下:

1 个答案:

答案 0 :(得分:2)

这是正确的版本:

  parameters:
    - in: body
      name: matrix
      description: blabla
      schema:
        type: array
        items:
          type: array
          items:
            type: number
            format: double
        example: [[1.0, 2.0],[3.0, 4.0]]

修复列表:

  • 不需要schema下的items
  • type: double应该为type: number + format: double(请参阅Data Types)。
  • 数组example应该在模式中的type: array旁边。参数本身不支持example关键字。

您可以使用在线Swagger Editor来检查规范中是否存在语法错误,它将标记出带有错误的行。

关于Swagger UI 2.x的说明

如果主体是基元数组,则Swagger UI 2.x不会显示主体参数示例。最新版本Swagger UI 3.x没有此问题。

2.x的可能解决方法是将x-examples.default键添加到body参数,然后将示例值指定为字符串

  parameters:
    - in: body
      name: matrix
      description: blabla
      schema:
        type: array
        items:
          type: array
          items:
            type: number
            format: double
        example: [[1.0, 2.0],[3.0, 4.0]]
      x-examples:
        default: '[[1.0, 2.0],[3.0, 4.0]]'  # <-----