pub enum AllowedMethods {
Some(MethodAllowList),
All,
}
Expand description
The set of HTTP methods that are allowed for a given path.
§Example
use pavex::router::AllowedMethods;
use pavex::response::Response;
use pavex::http::header::{ALLOW, HeaderValue};
use itertools::Itertools;
/// A fallback handler that returns a `404 Not Found` if the request path
/// doesn't match any of the registered routes, or a `405 Method Not Allowed`
/// if the request path matches a registered route but there is no handler
/// for its HTTP method.
pub async fn fallback(allowed_methods: AllowedMethods) -> Response {
if let Some(header_value) = allowed_methods.allow_header_value() {
Response::method_not_allowed()
.insert_header(ALLOW, header_value)
} else {
Response::not_found()
}
}
§Framework primitive
AllowedMethods
is a framework primitive—you don’t need to register any constructor
with Blueprint
to use it in your application.
§Use cases
AllowedMethods
comes into the play when implementing fallback handlers: it is necessary
to set the Allow
header to the correct value when returning a 405 Method Not Allowed
response after a routing failure.
Variants§
Some(MethodAllowList)
Only a finite set of HTTP methods are allowed for a given path.
All
All HTTP methods are allowed for a given path, including custom ones.
Implementations§
source§impl AllowedMethods
impl AllowedMethods
sourcepub fn allow_header_value(&self) -> Option<HeaderValue>
pub fn allow_header_value(&self) -> Option<HeaderValue>
The value that should be set for the Allow
header
in a 405 Method Not Allowed
response for this route path.
It returns None
if all methods are allowed.
It returns the comma-separated list of accepted HTTP methods otherwise.
Trait Implementations§
source§impl Clone for AllowedMethods
impl Clone for AllowedMethods
source§fn clone(&self) -> AllowedMethods
fn clone(&self) -> AllowedMethods
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for AllowedMethods
impl Debug for AllowedMethods
source§impl From<MethodAllowList> for AllowedMethods
impl From<MethodAllowList> for AllowedMethods
source§fn from(methods: MethodAllowList) -> Self
fn from(methods: MethodAllowList) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl Freeze for AllowedMethods
impl RefUnwindSafe for AllowedMethods
impl Send for AllowedMethods
impl Sync for AllowedMethods
impl Unpin for AllowedMethods
impl UnwindSafe for AllowedMethods
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)