1 unstable release
| 0.1.0 | Jun 20, 2023 |
|---|
#14 in #axum-extractor
20KB
133 lines
axum-option
Better handling of optional extractors in axum.
This crate exposes a trait, and an extractor, that allows you to extract a potentially-missing value in your handlers.
Crates may implement FromRequestPartsOptional for their
extractors to signify that the extractor can have a missing value,
and then the ValidOption extractor can be used to extract
either a valid T, or a missing T, but reject an invalid T.
How does this differ from using Option<T> directly?
Unfortunately, axum's default 'Option' handler means either
'T passed validation' or 'T failed validation', essentially
meaning the same as Result<T, T::Rejection>.ok(), which
is typically not what you want to do. It means that supporting
handlers that, for example, need either a valid cookie, or
no cookie at all, requires per-crate newtype wrapper
boilerplate and knowledge over the internal workings of the
crate itself. ValidOption solves this M + N problem.
Now you can do ValidOption<Session> and get either a valid
session, or no session at all, but reject an invalid session.
Dependencies
~11–30MB
~345K SLoC