pub struct ServableRouter { /* private fields */ }Expand description
A set of related Servables under one route.
Use as follows:
use servable::{ServableRouter, StaticAsset, mime::MimeType};
use axum::Router;
use tower_http::compression::{CompressionLayer, predicate::DefaultPredicate};
// Add compression, for example.
// Also consider CORS and timeout.
let compression: CompressionLayer = CompressionLayer::new()
.br(true)
.deflate(true)
.gzip(true)
.zstd(true)
.compress_when(DefaultPredicate::new());
let route = ServableRouter::new()
.add_page(
"/page",
StaticAsset {
bytes: "I am a page".as_bytes(),
mime: MimeType::Text,
ttl: StaticAsset::DEFAULT_TTL
},
);
let router: Router<()> = route
.into_router()
.layer(compression.clone());Implementations§
Source§impl ServableRouter
impl ServableRouter
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a new, empty ServableRouter
Sourcepub fn with_404<S: Servable + 'static>(self, page: S) -> Self
pub fn with_404<S: Servable + 'static>(self, page: S) -> Self
Set this server’s “not found” page
Sourcepub fn add_page<S: Servable + 'static>(
self,
route: impl Into<String>,
page: S,
) -> Self
pub fn add_page<S: Servable + 'static>( self, route: impl Into<String>, page: S, ) -> Self
Add a Servable to this server at the given route.
- panics if route does not start with a
/, ends with a/, or contains//.- urls are normalized, routes that violate this condition will never be served.
/is an exception, it is valid.
- panics if called after this service is started
- overwrites existing pages
Sourcepub fn add_page_with_route<S: Servable + 'static>(
self,
servable_with_route: &'static ServableWithRoute<S>,
) -> Self
pub fn add_page_with_route<S: Servable + 'static>( self, servable_with_route: &'static ServableWithRoute<S>, ) -> Self
Add a ServableWithRoute to this server. Behaves exactly like Self::add_page.
Trait Implementations§
Source§impl Clone for ServableRouter
impl Clone for ServableRouter
Source§fn clone(&self) -> ServableRouter
fn clone(&self) -> ServableRouter
Returns a duplicate 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 Service<Request<Body>> for ServableRouter
impl Service<Request<Body>> for ServableRouter
Source§type Error = Infallible
type Error = Infallible
Errors produced by the service.
Source§type Future = Pin<Box<dyn Future<Output = Result<<ServableRouter as Service<Request<Body>>>::Response, <ServableRouter as Service<Request<Body>>>::Error>> + Send>>
type Future = Pin<Box<dyn Future<Output = Result<<ServableRouter as Service<Request<Body>>>::Response, <ServableRouter as Service<Request<Body>>>::Error>> + Send>>
The future response value.
Auto Trait Implementations§
impl Freeze for ServableRouter
impl !RefUnwindSafe for ServableRouter
impl Send for ServableRouter
impl Sync for ServableRouter
impl Unpin for ServableRouter
impl !UnwindSafe for ServableRouter
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§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<S, R> ServiceExt<R> for Swhere
S: Service<R>,
impl<S, R> ServiceExt<R> for Swhere
S: Service<R>,
Source§fn into_make_service(self) -> IntoMakeService<S>
fn into_make_service(self) -> IntoMakeService<S>
Convert this service into a
MakeService, that is a Service whose
response is another service. Read moreSource§fn into_make_service_with_connect_info<C>(
self,
) -> IntoMakeServiceWithConnectInfo<S, C>
fn into_make_service_with_connect_info<C>( self, ) -> IntoMakeServiceWithConnectInfo<S, C>
Convert this service into a
MakeService, that will store C’s
associated ConnectInfo in a request extension such that ConnectInfo
can extract it. Read moreSource§fn handle_error<F, T>(self, f: F) -> HandleError<Self, F, T>
fn handle_error<F, T>(self, f: F) -> HandleError<Self, F, T>
Convert this service into a
HandleError, that will handle errors
by converting them into responses. Read moreSource§impl<T, Request> ServiceExt<Request> for T
impl<T, Request> ServiceExt<Request> for T
Source§fn ready(&mut self) -> Ready<'_, Self, Request>where
Self: Sized,
fn ready(&mut self) -> Ready<'_, Self, Request>where
Self: Sized,
Yields a mutable reference to the service when it is ready to accept a request.
Source§fn ready_oneshot(self) -> ReadyOneshot<Self, Request>where
Self: Sized,
fn ready_oneshot(self) -> ReadyOneshot<Self, Request>where
Self: Sized,
Yields the service when it is ready to accept a request.
Source§fn oneshot(self, req: Request) -> Oneshot<Self, Request>where
Self: Sized,
fn oneshot(self, req: Request) -> Oneshot<Self, Request>where
Self: Sized,
Consume this
Service, calling it with the provided request once it is ready.Source§fn and_then<F>(self, f: F) -> AndThen<Self, F>
fn and_then<F>(self, f: F) -> AndThen<Self, F>
Executes a new future after this service’s future resolves. This does
not alter the behaviour of the
poll_ready method. Read moreSource§fn map_response<F, Response>(self, f: F) -> MapResponse<Self, F>
fn map_response<F, Response>(self, f: F) -> MapResponse<Self, F>
Maps this service’s response value to a different value. This does not
alter the behaviour of the
poll_ready method. Read moreSource§fn map_err<F, Error>(self, f: F) -> MapErr<Self, F>
fn map_err<F, Error>(self, f: F) -> MapErr<Self, F>
Maps this service’s error value to a different value. This does not
alter the behaviour of the
poll_ready method. Read moreSource§fn map_result<F, Response, Error>(self, f: F) -> MapResult<Self, F>
fn map_result<F, Response, Error>(self, f: F) -> MapResult<Self, F>
Maps this service’s result type (
Result<Self::Response, Self::Error>)
to a different value, regardless of whether the future succeeds or
fails. Read moreSource§fn map_request<F, NewRequest>(self, f: F) -> MapRequest<Self, F>
fn map_request<F, NewRequest>(self, f: F) -> MapRequest<Self, F>
Composes a function in front of the service. Read more
Source§fn then<F, Response, Error, Fut>(self, f: F) -> Then<Self, F>
fn then<F, Response, Error, Fut>(self, f: F) -> Then<Self, F>
Composes an asynchronous function after this service. Read more
Source§fn map_future<F, Fut, Response, Error>(self, f: F) -> MapFuture<Self, F>
fn map_future<F, Fut, Response, Error>(self, f: F) -> MapFuture<Self, F>
Composes a function that transforms futures produced by the service. Read more