首页 > 解决方案 > 在大摇大摆的例子中描述属性

问题描述

尝试在 swagger 的 JSON 响应定义中添加多行示例。需要得到类似的结构

{
    "result": {
        "urls": {
            "site/index": true,
            "site/create": true,
            "site/update": true,
            "site/delete": true,
            "site/types": true,
            "site/save": false
        }
    }
} 

但现在我所拥有的一切

{
  "result": {
    "urls": [
      {
        "site/index": true
      },
      {
        "site/create": true
      },
      {
        "site/update": true
      },
      {
        "site/delete": true
      },
      {
        "site/types": true
      },
      {
        "site/save": false
      }
    ]
  }
}

我的 YAML 文件看起来像

swagger: "2.0"
info:
  description: "xxx"
  version: 1.2.8
  title: "xxx"
host: "xxx"
basePath: "xxx"
schemes:
- "https"

consumes:
  - application/json
produces:
  - application/json            

  /site/check:
    post:
      summary: ""
      description: ""
      parameters:
        - in: body
          name: urls
          required: true
          schema:
            $ref: '#/definitions/CheckAccess'
      responses:
        200:
          description: OK
          schema:
            $ref: '#/definitions/CheckAccessOKResponse'


definitions:      
  CheckAccess:
    properties:
      urls:
        type: string 
        example:
          - "site/index"
          - "site/create"
          - "site/update"
          - "site/delete"
          - "site/types"
          - "site/save"
    required:  
      - urls

  CheckAccessOKResponse:
    properties:
      result:
        type: object
        properties:
          urls:
            type: object
            example:
              - "site/index": true
              - "site/create": true
              - "site/update": true
              - "site/delete": true
              - "site/types": true
              - "site/save": false

示例中的字符串可以不同,它只是一个路径块。如何修复我的 CheckAccessOKResponse 示例或结构以获得所需的 JSON 视图?谢谢你。

标签: jsonyamlswagger-2.0

解决方案


example从值列表中删除前导短划线。破折号表示数组项,您不需要。

此外,result.urls当前定义为自由形式的对象,但您可能需要一个字符串到布尔映射。

  CheckAccessOKResponse:
    properties:
      result:
        type: object
        properties:
          urls:
            type: object
            additionalProperties:  # <--- this means the object is
              type: boolean        #      a string-to-boolean map
            example:
              "site/index": true   # <--- no leading dashes
              "site/create": true
              "site/update": true
              "site/delete": true
              "site/types": true
              "site/save": false

推荐阅读