[Rust-Axum] Allow use of array query params#20861
[Rust-Axum] Allow use of array query params#20861wing328 merged 2 commits intoOpenAPITools:masterfrom
Conversation
|
thanks for the PR cc @linxGnu |
|
what about adding a config similar to those in https://github.com/OpenAPITools/openapi-generator/tree/master/bin/configs/manual to test array of query params (and commit the new samples)? |
| #[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))] | ||
| pub struct {{{operationIdCamelCase}}}QueryParams { | ||
| {{#queryParams}} | ||
| {{#vendorExtensions}} |
There was a problem hiding this comment.
@tanadeau could you please explain why we need to remove vendorExtensions?
There was a problem hiding this comment.
This created the wrong context, and within it, the template couldn't get the correct values for isArray, etc. It's now also consistent with the other blocks for header params, path params, etc. They would have had the same issue.
| serde = { version = "1", features = ["derive"] } | ||
| serde_html_form = "0.2" | ||
| serde_json = { version = "1", features = ["raw_value"] } | ||
| serde_urlencoded = "0.7" |
There was a problem hiding this comment.
could you please also explain why we need to replace serde_urlencoded with serde_html_form?
There was a problem hiding this comment.
serde_urlencoded explicitly doesn't support array query params and will never do so. See nox/serde_urlencoded#52 for example. serde_html_form is a fork with that in mind. See item 2 in the PR description.
I'll do that. |
|
I believe I've addressed all comments. |
linxGnu
left a comment
There was a problem hiding this comment.
LGTM. Thank you for making the PR.
It contains breaking changes and the users must be aware of that
Is that something I need to do as part of this PR? |
This PR updates the rust-axum templates to do the following to support array query parameters:
Queryextractor fromaxum_extrainstead ofaxumas that supports extracting array query parametersserde_html_forminstead ofserde_urlencodedfor the same reason. Also the latter crate appears to be unmaintained. See https://docs.rs/serde_html_form/latest/serde_html_form/.*QueryParamsmodels based on guidance from above docs.FYI: @frol @farcaller @richardwhiuk @paladinzh @jacob-pro
PR checklist
Commit all changed files.
This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
These must match the expectations made by your contribution.
You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example
./bin/generate-samples.sh bin/configs/java*.IMPORTANT: Do NOT purge/delete any folders/files (e.g. tests) when regenerating the samples as manually written tests may be removed.
master(upcoming7.x.0minor release - breaking changes with fallbacks),8.0.x(breaking changes without fallbacks)