Struct WebService
pub struct WebService<State = ()> { /* private fields */ }http only.Expand description
A basic web service that can be used to serve HTTP requests.
Note that this service boxes all the internal services, so it is not as efficient as it could be.
For those locations where you need do not desire the convenience over performance,
you can instead use a tuple of (M, S) tuples, where M is a matcher and S is a service,
e.g. ((MethodMatcher::GET, service_a), (MethodMatcher::POST, service_b), service_fallback).
Implementations§
§impl WebService
impl WebService
pub fn new() -> WebService
pub fn new() -> WebService
create a new web service
§impl<State> WebService<State>
impl<State> WebService<State>
pub fn new_with_state(state: State) -> WebService<State>
pub fn with_get<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn with_get<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
add a GET route to the web service, using the given service.
pub fn set_get<I, T>(
&mut self,
path: &str,
service: I,
) -> &mut WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn set_get<I, T>(
&mut self,
path: &str,
service: I,
) -> &mut WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
add a GET route to the web service, using the given service.
pub fn with_post<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn with_post<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
add a POST route to the web service, using the given service.
pub fn set_post<I, T>(
&mut self,
path: &str,
service: I,
) -> &mut WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn set_post<I, T>(
&mut self,
path: &str,
service: I,
) -> &mut WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
add a POST route to the web service, using the given service.
pub fn with_put<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn with_put<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
add a PUT route to the web service, using the given service.
pub fn set_put<I, T>(
&mut self,
path: &str,
service: I,
) -> &mut WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn set_put<I, T>(
&mut self,
path: &str,
service: I,
) -> &mut WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
add a PUT route to the web service, using the given service.
pub fn with_delete<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn with_delete<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
add a DELETE route to the web service, using the given service.
pub fn set_delete<I, T>(
&mut self,
path: &str,
service: I,
) -> &mut WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn set_delete<I, T>(
&mut self,
path: &str,
service: I,
) -> &mut WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
add a DELETE route to the web service, using the given service.
pub fn with_patch<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn with_patch<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
add a PATCH route to the web service, using the given service.
pub fn set_patch<I, T>(
&mut self,
path: &str,
service: I,
) -> &mut WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn set_patch<I, T>(
&mut self,
path: &str,
service: I,
) -> &mut WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
add a PATCH route to the web service, using the given service.
pub fn with_head<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn with_head<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
add a HEAD route to the web service, using the given service.
pub fn set_head<I, T>(
&mut self,
path: &str,
service: I,
) -> &mut WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn set_head<I, T>(
&mut self,
path: &str,
service: I,
) -> &mut WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
add a HEAD route to the web service, using the given service.
pub fn with_options<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn with_options<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
add a OPTIONS route to the web service, using the given service.
pub fn set_options<I, T>(
&mut self,
path: &str,
service: I,
) -> &mut WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn set_options<I, T>(
&mut self,
path: &str,
service: I,
) -> &mut WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
add a OPTIONS route to the web service, using the given service.
pub fn with_trace<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn with_trace<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
add a TRACE route to the web service, using the given service.
pub fn set_trace<I, T>(
&mut self,
path: &str,
service: I,
) -> &mut WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn set_trace<I, T>(
&mut self,
path: &str,
service: I,
) -> &mut WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
add a TRACE route to the web service, using the given service.
pub fn with_nest_make_fn(
self,
prefix: &str,
configure_svc: impl FnOnce(WebService<State>) -> WebService<State>,
) -> WebService<State>
pub fn with_nest_make_fn( self, prefix: &str, configure_svc: impl FnOnce(WebService<State>) -> WebService<State>, ) -> WebService<State>
Nest a web service under the given path.
The nested service will receive a request with the path prefix removed.
Note: this sub-webservice is configured with the same State this router has.
pub fn set_nest_make_fn(
&mut self,
prefix: &str,
configure_svc: impl FnOnce(WebService<State>) -> WebService<State>,
) -> &mut WebService<State>
pub fn set_nest_make_fn( &mut self, prefix: &str, configure_svc: impl FnOnce(WebService<State>) -> WebService<State>, ) -> &mut WebService<State>
Nest a web service under the given path.
The nested service will receive a request with the path prefix removed.
Note: this sub-webservice is configured with the same State this router has.
pub fn with_nest_service<I, T>(
self,
prefix: impl AsRef<str>,
service: I,
) -> WebService<State>where
I: IntoEndpointService<T>,
pub fn with_nest_service<I, T>(
self,
prefix: impl AsRef<str>,
service: I,
) -> WebService<State>where
I: IntoEndpointService<T>,
Nest a web service under the given path.
The nested service will receive a request with the path prefix removed.
Warning: This sub-service has no notion of the state this webservice has. If you want to create a nested-service that shares the same state this webservice has, use [WebService::nest] instead.
pub fn set_nest_service<I, T>(
&mut self,
prefix: impl AsRef<str>,
service: I,
) -> &mut WebService<State>where
I: IntoEndpointService<T>,
pub fn set_nest_service<I, T>(
&mut self,
prefix: impl AsRef<str>,
service: I,
) -> &mut WebService<State>where
I: IntoEndpointService<T>,
Nest a web service under the given path.
The nested service will receive a request with the path prefix removed.
Warning: This sub-service has no notion of the state this webservice has. If you want to create a nested-service that shares the same state this webservice has, use [WebService::nest] instead.
pub fn with_file(
self,
prefix: &str,
path: impl AsRef<Path>,
mime: Mime,
) -> WebService<State>
pub fn with_file( self, prefix: &str, path: impl AsRef<Path>, mime: Mime, ) -> WebService<State>
serve the given file under the given path.
pub fn set_file(
&mut self,
prefix: &str,
path: impl AsRef<Path>,
mime: Mime,
) -> &mut WebService<State>
pub fn set_file( &mut self, prefix: &str, path: impl AsRef<Path>, mime: Mime, ) -> &mut WebService<State>
serve the given file under the given path.
pub fn with_dir(self, prefix: &str, path: impl AsRef<Path>) -> WebService<State>
pub fn with_dir(self, prefix: &str, path: impl AsRef<Path>) -> WebService<State>
serve the given directory under the given path.
pub fn set_dir(
&mut self,
prefix: &str,
path: impl AsRef<Path>,
) -> &mut WebService<State>
pub fn set_dir( &mut self, prefix: &str, path: impl AsRef<Path>, ) -> &mut WebService<State>
serve the given directory under the given path.
pub fn with_dir_with_serve_mode(
self,
prefix: &str,
path: impl AsRef<Path>,
mode: DirectoryServeMode,
) -> WebService<State>
pub fn with_dir_with_serve_mode( self, prefix: &str, path: impl AsRef<Path>, mode: DirectoryServeMode, ) -> WebService<State>
serve the given directory under the given path, with a custom serve move.
pub fn set_dir_with_serve_mode(
&mut self,
prefix: &str,
path: impl AsRef<Path>,
mode: DirectoryServeMode,
) -> &mut WebService<State>
pub fn set_dir_with_serve_mode( &mut self, prefix: &str, path: impl AsRef<Path>, mode: DirectoryServeMode, ) -> &mut WebService<State>
serve the given directory under the given path, with a custom serve move.
pub fn with_dir_embed(
self,
prefix: &str,
dir: Dir<'static>,
) -> WebService<State>
pub fn with_dir_embed( self, prefix: &str, dir: Dir<'static>, ) -> WebService<State>
serve the given embedded directory under the given path.
pub fn set_dir_embed(
&mut self,
prefix: &str,
dir: Dir<'static>,
) -> &mut WebService<State>
pub fn set_dir_embed( &mut self, prefix: &str, dir: Dir<'static>, ) -> &mut WebService<State>
serve the given embedded directory under the given path.
pub fn with_dir_embed_with_serve_mode(
self,
prefix: &str,
dir: Dir<'static>,
mode: DirectoryServeMode,
) -> WebService<State>
pub fn with_dir_embed_with_serve_mode( self, prefix: &str, dir: Dir<'static>, mode: DirectoryServeMode, ) -> WebService<State>
serve the given embedded directory under the given path with a custom serve move.
pub fn set_dir_embed_with_serve_mode(
&mut self,
prefix: &str,
dir: Dir<'static>,
mode: DirectoryServeMode,
) -> &mut WebService<State>
pub fn set_dir_embed_with_serve_mode( &mut self, prefix: &str, dir: Dir<'static>, mode: DirectoryServeMode, ) -> &mut WebService<State>
serve the given embedded directory under the given path with a custom serve move.
pub fn with_matcher<I, T>(
self,
matcher: HttpMatcher<Body>,
service: I,
) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn with_matcher<I, T>(
self,
matcher: HttpMatcher<Body>,
service: I,
) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
add a route to the web service which matches the given matcher, using the given service.
pub fn set_matcher<I, T>(
&mut self,
matcher: HttpMatcher<Body>,
service: I,
) -> &mut WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn set_matcher<I, T>(
&mut self,
matcher: HttpMatcher<Body>,
service: I,
) -> &mut WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
add a route to the web service which matches the given matcher, using the given service.
pub fn with_not_found<I, T>(self, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn with_not_found<I, T>(self, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
use the given service in case no match could be found.
pub fn set_not_found<I, T>(&mut self, service: I) -> &mut WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn set_not_found<I, T>(&mut self, service: I) -> &mut WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
use the given service in case no match could be found.
Trait Implementations§
§impl<State> Clone for WebService<State>where
State: Clone,
impl<State> Clone for WebService<State>where
State: Clone,
§fn clone(&self) -> WebService<State>
fn clone(&self) -> WebService<State>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for WebService
impl Debug for WebService
§impl Default for WebService
impl Default for WebService
§fn default() -> WebService
fn default() -> WebService
§impl<State> Service<Request> for WebService<State>
impl<State> Service<Request> for WebService<State>
§type Error = Infallible
type Error = Infallible
§async fn serve(
&self,
req: Request,
) -> Result<<WebService<State> as Service<Request>>::Response, <WebService<State> as Service<Request>>::Error>
async fn serve( &self, req: Request, ) -> Result<<WebService<State> as Service<Request>>::Response, <WebService<State> as Service<Request>>::Error>
§fn boxed(self) -> BoxService<Request, Self::Response, Self::Error>
fn boxed(self) -> BoxService<Request, Self::Response, Self::Error>
Auto Trait Implementations§
impl<State> Freeze for WebService<State>where
State: Freeze,
impl<State = ()> !RefUnwindSafe for WebService<State>
impl<State> Send for WebService<State>where
State: Send,
impl<State> Sync for WebService<State>where
State: Sync,
impl<State> Unpin for WebService<State>where
State: Unpin,
impl<State = ()> !UnwindSafe for WebService<State>
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<S, Body> HttpClientExt for S
impl<S, Body> HttpClientExt for S
§type ExecuteResponse = Response<Body>
type ExecuteResponse = Response<Body>
execute method.§type ExecuteError = <S as Service<Request>>::Error
type ExecuteError = <S as Service<Request>>::Error
execute method.§fn get(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn get( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
GET request to a URL. Read more§fn post(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn post( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
POST request to a URL. Read more§fn put(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn put( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
PUT request to a URL. Read more§fn patch(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn patch( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
PATCH request to a URL. Read more§fn delete(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn delete( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
DELETE request to a URL. Read more§fn head(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn head( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
HEAD request to a URL. Read more§fn connect(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn connect( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
CONNECT request to a URL. Read more§fn request(
&self,
method: Method,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn request( &self, method: Method, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
§fn build_from_request<RequestBody>(
&self,
request: Request<RequestBody>,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn build_from_request<RequestBody>( &self, request: Request<RequestBody>, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
§fn execute(
&self,
request: Request,
) -> impl Future<Output = Result<<S as HttpClientExt>::ExecuteResponse, <S as HttpClientExt>::ExecuteError>>
fn execute( &self, request: Request, ) -> impl Future<Output = Result<<S as HttpClientExt>::ExecuteResponse, <S as HttpClientExt>::ExecuteError>>
Request. Read more§impl<S, Body> HttpClientWebSocketExt<Body> for S
impl<S, Body> HttpClientWebSocketExt<Body> for S
§fn websocket(
&self,
url: impl IntoUrl,
) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
fn websocket( &self, url: impl IntoUrl, ) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
WebSocketRequestBuilder] to be used to establish a WebSocket connection over http/1.1.§fn websocket_h2(
&self,
url: impl IntoUrl,
) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
fn websocket_h2( &self, url: impl IntoUrl, ) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
WebSocketRequestBuilder to be used to establish a WebSocket connection over h2.§fn websocket_with_request<RequestBody>(
&self,
req: Request<RequestBody>,
) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
fn websocket_with_request<RequestBody>( &self, req: Request<RequestBody>, ) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
WebSocketRequestBuilder starting from the given request. Read more§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<S, R> IntoEndpointService<(R,)> for Swhere
S: Service<Request, Response = R, Error = Infallible>,
R: IntoResponse + Send + Sync + 'static,
impl<S, R> IntoEndpointService<(R,)> for Swhere
S: Service<Request, Response = R, Error = Infallible>,
R: IntoResponse + Send + Sync + 'static,
§fn into_endpoint_service(
self,
) -> impl Service<Request, Response = Response, Error = Infallible>
fn into_endpoint_service( self, ) -> impl Service<Request, Response = Response, Error = Infallible>
rama_core::Service.§impl<S, R, State> IntoEndpointServiceWithState<(R,), State> for Swhere
S: Service<Request, Response = R, Error = Infallible>,
R: IntoResponse + Send + Sync + 'static,
impl<S, R, State> IntoEndpointServiceWithState<(R,), State> for Swhere
S: Service<Request, Response = R, Error = Infallible>,
R: IntoResponse + Send + Sync + 'static,
§fn into_endpoint_service_with_state(
self,
_state: State,
) -> impl Service<Request, Response = Response, Error = Infallible>
fn into_endpoint_service_with_state( self, _state: State, ) -> impl Service<Request, Response = Response, Error = Infallible>
rama_core::Service with state.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more