Add failing test for multipart array parameters#630
Open
stevehodgkiss wants to merge 1 commit intoopen-api-spex:masterfrom
Open
Add failing test for multipart array parameters#630stevehodgkiss wants to merge 1 commit intoopen-api-spex:masterfrom
stevehodgkiss wants to merge 1 commit intoopen-api-spex:masterfrom
Conversation
mbuhot
reviewed
Aug 20, 2024
|
|
||
| plug OpenApiSpex.Plug.CastAndValidate, json_render_error_v2: true, replace_params: false | ||
|
|
||
| @doc request_body: {"Files", "multipart/form-data", Schemas.UploadRequest}, |
Collaborator
There was a problem hiding this comment.
Ideally this could be handled by setting the encoding on the mediaType, something like:
{"Files",
%{
"multipart/form-data" => [
encoding: %{"files" => %OpenApiSpex.Encoding{style: "deepObject"}}
]
}, Schemas.UploadRequest},
However it didn't seem to have any effect on the generated curl commands or request body sent from the swagger UI.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.filesinstead offiles[]).Plug's param parsing happens before the CastAndValidate plug, so the plug sees
fileswhere the user actually providedfiles[]in the request.How can this be handled?
One option could be to add a
parsed_param_nameoption 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: truewith this approach though.