Add failing test for multipart array parameters #630
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adds a failing spec for the issue described in #441
Array parameters need to be supplied with
[]
on the end of the parameter name, because plug won't parse them into lists without it:This means the key for the openapi spec needs to have
[]
at the end of array parameters, otherwise clients generated from the openapi.json file will be using the incorrect name in requests (i.e.files
instead offiles[]
).Plug's param parsing happens before the CastAndValidate plug, so the plug sees
files
where the user actually providedfiles[]
in the request.How can this be handled?
One option could be to add a
parsed_param_name
option toSchema
, and use that to cast/validate. Users would then have to provideparsed_param_name: "files"
in this scenario. Maybe there's a way to automatically derive the parsed name from the key name.Another option is to strip
[]
from the end of key names in the cast/validate plug. This is what the solution provided by @christmoore is doing in #441 (comment) (thanks for that @christmoore!). It wouldn't be possible to supportreplace_params: true
with this approach though.