Swagger array of objects

14,479

To send JSON data, you need to use use an in: body parameter (not in: formData) and specify that the operation consumes application/json. formData parameters are used for operations that consume application/x-www-form-urlencoded or multipart/form-data.

paths:
  /something:
     post:
       consumes:
         - application/json
       parameters:
         - in: body
           name: addresses
           required: true
           schema:
             type: array
             items:
               $ref: "#/definitions/Address"  # if "Address" is in the same file
               # or
               # $ref: "anotherfile.yaml#/definitions/Address"  # if "Address" is in another file
Share:
14,479
Lorenzo Tassone
Author by

Lorenzo Tassone

Updated on June 26, 2022

Comments

  • Lorenzo Tassone
    Lorenzo Tassone almost 2 years

    I am having some issues with swagger: I have an array of objects (address) described in this way in the .yaml file:

    Address:
      properties:
        street:
          type: string
        city:
          type: string
        state:
          type: string
        country:
          type: string
    

    and this is the other yaml file with the definitions of the API (address is a params):

     - name: addresses
       in: formData
       description: List of adresses of the user. The first one is the default one.
       type: array
       items:
         $ref: '#/definitions/Address'
    

    And this is the text I put in the swagger UI:

    [
      {
        "street": "Bond street",
        "city": "Torino",
        "state": "Italy",
        "country": "Italy"
      }
    ]
    

    but in node.js, if I print what I receive:

    {"addresses":["["," {"," \"street\": \"Bond street\","," \"city\": \"Torino\","," \"state\": \"Italy\","," \"country\": \"Italy\""," }","]"]}

    And I get a parsing error... There are some extra [ and ". It seems that swagger parse it as string (?)

  • Lorenzo Tassone
    Lorenzo Tassone almost 7 years
    Thank you for all the suggestions. But something is not working anyway. I changed the in:body but still
  • Helen
    Helen almost 7 years
    Define "is not working". Does Swagger UI render this incorrectly? Does you backend receive incorrect data? The more details the better.
  • Lorenzo Tassone
    Lorenzo Tassone almost 7 years
    yes, sorry for the short answer yesterday. Still receiving wrong data in my BE.
  • Lorenzo Tassone
    Lorenzo Tassone almost 7 years
    Hello, In the end I was able to fix it. I didn't notice the change in schema. Thank you.