How to describe a model in Swagger for an array with simple objects?

后端 未结 7 2037
长发绾君心
长发绾君心 2020-12-15 15:30

I have a REST services to document, some of them accepts simple array like:

[
  { \"name\":\"a\" },
  { \"name\":\"b\" },
  { \"name\":\"c\" }
]
7条回答
  •  [愿得一人]
    2020-12-15 16:33

    Tony YUEN was close, but no cigar. This is the proper definition using YAML in OpenAPI/Swagger:

      /test:
    post:
      summary: test 123
      description: test 123
      parameters:
        - name: param1
          in: body
          required: true
          description: test param1
          schema:
              $ref: '#/definitions/stackoverflow'
      responses:
        200:
          description: OK
    

    This produces:

    stackoverflow2[
      {
         name: string
      }
    ]
    

    Tony's example produces:

    [
      stackoverflow { 
                     name: string
      }
    ]
    

    Complete Swagger/OpenAPI as YAML (copy & paste)

        swagger: '2.0'
    
    ################################################################################
    #                              API Information                                 #
    ################################################################################
    info:
      version: "Two-point-Oh!"
      title: Simple objects in array test
      description: |
        Simple objects in array test
    
    ################################################################################
    #                                   Parameters                                 #
    ################################################################################
    
    paths:
      /test:
        post:
          summary: Array with named objects
          description: Array with named objects
          parameters:
            - name: param1
              in: body
              required: true
              description: test param1
              schema:
                type: array
                items:
                  $ref: '#/definitions/stackoverflow'
          responses:
            200:
              description: OK
      /test2:
        post:
          summary: Array with simpel (nameless) objects
          description: Array with simpel (nameless)  objects
          parameters:
            - name: param1
              in: body
              required: true
              description: test param1
              schema:
                  $ref: '#/definitions/stackoverflow2'
          responses:
            200:
              description: OK
    definitions:
      stackoverflow:
        type: object
        properties:
          name:
            type: string
            description: name of the object
      stackoverflow2:
        type: array
        items:
          type: object
          properties:
            name:
              type: string
              description: name of the object
    

    Here's a JSON-version of Swagger/OpenAPI

        {
      "swagger" : "2.0",
      "info" : {
        "description" : "Simple objects in array test\n",
        "version" : "Two-point-Oh!",
        "title" : "Simple objects in array test"
      },
      "paths" : {
        "/test" : {
          "post" : {
            "summary" : "Array with named objects",
            "description" : "Array with named objects",
            "parameters" : [ {
              "in" : "body",
              "name" : "param1",
              "description" : "test param1",
              "required" : true,
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/definitions/stackoverflow"
                }
              }
            } ],
            "responses" : {
              "200" : {
                "description" : "OK"
              }
            }
          }
        },
        "/test2" : {
          "post" : {
            "summary" : "Array with simpel (nameless) objects",
            "description" : "Array with simpel (nameless)  objects",
            "parameters" : [ {
              "in" : "body",
              "name" : "param1",
              "description" : "test param1",
              "required" : true,
              "schema" : {
                "$ref" : "#/definitions/stackoverflow2"
              }
            } ],
            "responses" : {
              "200" : {
                "description" : "OK"
              }
            }
          }
        }
      },
      "definitions" : {
        "stackoverflow" : {
          "type" : "object",
          "properties" : {
            "name" : {
              "type" : "string",
              "description" : "name of the object"
            }
          }
        },
        "stackoverflow2" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/stackoverflow2_inner"
          }
        },
        "stackoverflow2_inner" : {
          "properties" : {
            "name" : {
              "type" : "string",
              "description" : "name of the object"
            }
          }
        }
      }
    }
    

提交回复
热议问题