Change the behaviour of .query
: optional params and explicit error in the response body
#384
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.
This PR changes the behavior of
.query
: if the caller has not specified any query parameter, we still try to deserialise the desired type from an empty string.This allows successful deserialisation of structs which do not have any mandatory field, e.g.
On master, this requires using
unwrap_or
on the outcome of.query
which I think it's unnecessary.If you forget about it, it leads to surprising behavior: calling the endpoint with any query parameter (none of which in the struct) would trigger a successful deserialisation, while a call without query params would result in a 400.
I have also added, for the unhappy case, the deserialisation error in the response body: it makes for a much more pleasant experience when trying to debug why an endpoint is returning
Bad Request
😅