Struct WebService
pub struct WebService<State = ()> { /* private fields */ }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<State> WebService<State>
impl<State> WebService<State>
pub fn with_state<T>(self, state: T) -> WebService<T>
pub fn get<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn 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 post<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn 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 put<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn 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 delete<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn 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 patch<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn 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 head<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn 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 options<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn 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 trace<I, T>(self, path: &str, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn 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 nest(self, prefix: &str, web_service: WebService) -> WebService<State>
pub fn nest(self, prefix: &str, web_service: WebService) -> 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 nest_service<I, T>(self, prefix: &str, service: I) -> WebService<State>where
I: IntoEndpointService<T>,
pub fn nest_service<I, T>(self, prefix: &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 file(
self,
prefix: &str,
path: impl AsRef<Path>,
mime: Mime,
) -> WebService<State>
pub fn file( self, prefix: &str, path: impl AsRef<Path>, mime: Mime, ) -> WebService<State>
serve the given file under the given path.
pub fn dir(self, prefix: &str, path: impl AsRef<Path>) -> WebService<State>
pub fn dir(self, prefix: &str, path: impl AsRef<Path>) -> WebService<State>
serve the given directory under the given path.
pub fn dir_with_serve_mode(
self,
prefix: &str,
path: impl AsRef<Path>,
mode: DirectoryServeMode,
) -> WebService<State>
pub fn 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 dir_embed(self, prefix: &str, dir: Dir<'static>) -> WebService<State>
pub fn dir_embed(self, prefix: &str, dir: Dir<'static>) -> WebService<State>
serve the given embedded directory under the given path.
pub fn dir_embed_with_serve_mode(
self,
prefix: &str,
dir: Dir<'static>,
mode: DirectoryServeMode,
) -> WebService<State>
pub fn 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 on<I, T>(
self,
matcher: HttpMatcher<Body>,
service: I,
) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn on<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 not_found<I, T>(self, service: I) -> WebService<State>where
I: IntoEndpointServiceWithState<T, State>,
pub fn 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.
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