Swagger array of objects
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
Lorenzo Tassone
Updated on June 26, 2022Comments
-
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 almost 7 yearsThank you for all the suggestions. But something is not working anyway. I changed the
in:body
but still -
Helen almost 7 yearsDefine "is not working". Does Swagger UI render this incorrectly? Does you backend receive incorrect data? The more details the better.
-
Lorenzo Tassone almost 7 yearsyes, sorry for the short answer yesterday. Still receiving wrong data in my BE.
-
Lorenzo Tassone almost 7 yearsHello, In the end I was able to fix it. I didn't notice the change in schema. Thank you.