Skip to main content

WebService

Struct WebService 

Source
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§

Source§

impl WebService

Source

pub fn new() -> Self

create a new web service

Source§

impl<State> WebService<State>
where State: Send + Sync + Clone + 'static,

Source

pub fn new_with_state(state: State) -> Self

Source

pub fn with_get<I, T>(self, path: &str, service: I) -> Self

add a GET route to the web service, using the given service.

Source

pub fn set_get<I, T>(&mut self, path: &str, service: I) -> &mut Self

add a GET route to the web service, using the given service.

Source

pub fn with_post<I, T>(self, path: &str, service: I) -> Self

add a POST route to the web service, using the given service.

Source

pub fn set_post<I, T>(&mut self, path: &str, service: I) -> &mut Self

add a POST route to the web service, using the given service.

Source

pub fn with_put<I, T>(self, path: &str, service: I) -> Self

add a PUT route to the web service, using the given service.

Source

pub fn set_put<I, T>(&mut self, path: &str, service: I) -> &mut Self

add a PUT route to the web service, using the given service.

Source

pub fn with_delete<I, T>(self, path: &str, service: I) -> Self

add a DELETE route to the web service, using the given service.

Source

pub fn set_delete<I, T>(&mut self, path: &str, service: I) -> &mut Self

add a DELETE route to the web service, using the given service.

Source

pub fn with_patch<I, T>(self, path: &str, service: I) -> Self

add a PATCH route to the web service, using the given service.

Source

pub fn set_patch<I, T>(&mut self, path: &str, service: I) -> &mut Self

add a PATCH route to the web service, using the given service.

Source

pub fn with_head<I, T>(self, path: &str, service: I) -> Self

add a HEAD route to the web service, using the given service.

Source

pub fn set_head<I, T>(&mut self, path: &str, service: I) -> &mut Self

add a HEAD route to the web service, using the given service.

Source

pub fn with_options<I, T>(self, path: &str, service: I) -> Self

add a OPTIONS route to the web service, using the given service.

Source

pub fn set_options<I, T>(&mut self, path: &str, service: I) -> &mut Self

add a OPTIONS route to the web service, using the given service.

Source

pub fn with_trace<I, T>(self, path: &str, service: I) -> Self

add a TRACE route to the web service, using the given service.

Source

pub fn set_trace<I, T>(&mut self, path: &str, service: I) -> &mut Self

add a TRACE route to the web service, using the given service.

Source

pub fn with_nest_make_fn( self, prefix: &str, configure_svc: impl FnOnce(Self) -> Self, ) -> Self

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.

Source

pub fn set_nest_make_fn( &mut self, prefix: &str, configure_svc: impl FnOnce(Self) -> Self, ) -> &mut Self

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.

Source

pub fn with_nest_service<I, T>( self, prefix: impl AsRef<str>, service: I, ) -> Self
where I: IntoEndpointService<T>, I::Service: Service<Request, Output = Response, Error = Infallible>,

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::set_nest_make_fn instead.

Source

pub fn set_nest_service<I, T>( &mut self, prefix: impl AsRef<str>, service: I, ) -> &mut Self
where I: IntoEndpointService<T>, I::Service: Service<Request, Output = Response, Error = Infallible>,

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::set_nest_make_fn instead.

Source

pub fn with_file(self, prefix: &str, path: impl AsRef<Path>, mime: Mime) -> Self

serve the given file under the given path.

Source

pub fn set_file( &mut self, prefix: &str, path: impl AsRef<Path>, mime: Mime, ) -> &mut Self

serve the given file under the given path.

Source

pub fn with_dir(self, prefix: &str, path: impl AsRef<Path>) -> Self

serve the given directory under the given path.

Source

pub fn set_dir(&mut self, prefix: &str, path: impl AsRef<Path>) -> &mut Self

serve the given directory under the given path.

Source

pub fn with_dir_with_serve_mode( self, prefix: &str, path: impl AsRef<Path>, mode: DirectoryServeMode, ) -> Self

serve the given directory under the given path, with a custom serve move.

Source

pub fn set_dir_with_serve_mode( &mut self, prefix: &str, path: impl AsRef<Path>, mode: DirectoryServeMode, ) -> &mut Self

serve the given directory under the given path, with a custom serve move.

Source

pub fn with_dir_embed(self, prefix: &str, dir: Dir<'static>) -> Self

serve the given embedded directory under the given path.

Source

pub fn set_dir_embed(&mut self, prefix: &str, dir: Dir<'static>) -> &mut Self

serve the given embedded directory under the given path.

Source

pub fn with_dir_embed_with_serve_mode( self, prefix: &str, dir: Dir<'static>, mode: DirectoryServeMode, ) -> Self

serve the given embedded directory under the given path with a custom serve move.

Source

pub fn set_dir_embed_with_serve_mode( &mut self, prefix: &str, dir: Dir<'static>, mode: DirectoryServeMode, ) -> &mut Self

serve the given embedded directory under the given path with a custom serve move.

Source

pub fn with_matcher<I, T>(self, matcher: HttpMatcher<Body>, service: I) -> Self

add a route to the web service which matches the given matcher, using the given service.

Source

pub fn set_matcher<I, T>( &mut self, matcher: HttpMatcher<Body>, service: I, ) -> &mut Self

add a route to the web service which matches the given matcher, using the given service.

Source

pub fn with_not_found<I, T>(self, service: I) -> Self

use the given service in case no match could be found.

Source

pub fn set_not_found<I, T>(&mut self, service: I) -> &mut Self

use the given service in case no match could be found.

Trait Implementations§

Source§

impl<State: Clone> Clone for WebService<State>

Source§

fn clone(&self) -> WebService<State>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<State: Debug> Debug for WebService<State>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for WebService

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<State> Service<Request> for WebService<State>
where State: Send + Sync + Clone + 'static,

Source§

type Output = Response

The type of the output returned by the service.
Source§

type Error = Infallible

The type of error returned by the service.
Source§

async fn serve(&self, req: Request) -> Result<Self::Output, Self::Error>

Serve an output or an error for the given input
Source§

fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>

Box this service to allow for dynamic dispatch.

Auto Trait Implementations§

§

impl<State = ()> !RefUnwindSafe for WebService<State>

§

impl<State = ()> !UnwindSafe for WebService<State>

§

impl<State> Freeze for WebService<State>
where State: Freeze,

§

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> UnsafeUnpin for WebService<State>
where State: UnsafeUnpin,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<S, Body> HttpClientExt for S
where S: Service<Request, Output = Response<Body>>, <S as Service<Request>>::Error: Into<Box<dyn Error + Sync + Send>>,

Source§

type ExecuteResponse = Response<Body>

The response type returned by the execute method.
Source§

type ExecuteError = <S as Service<Request>>::Error

The error type returned by the execute method.
Source§

fn get( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>

Convenience method to make a GET request to a URL. Read more
Source§

fn post( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>

Convenience method to make a POST request to a URL. Read more
Source§

fn put( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>

Convenience method to make a PUT request to a URL. Read more
Source§

fn patch( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>

Convenience method to make a PATCH request to a URL. Read more
Source§

fn delete( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>

Convenience method to make a DELETE request to a URL. Read more
Source§

fn head( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>

Convenience method to make a HEAD request to a URL. Read more
Source§

fn connect( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>

Convenience method to make a CONNECT request to a URL. Read more
Source§

fn request( &self, method: Method, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>

Start building a Request with the Method and Url. Read more
Source§

fn build_from_request<RequestBody>( &self, request: Request<RequestBody>, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
where RequestBody: Into<Body>,

Start building a Request, using the given Request. Read more
Source§

fn execute( &self, request: Request, ) -> impl Future<Output = Result<<S as HttpClientExt>::ExecuteResponse, <S as HttpClientExt>::ExecuteError>>

Executes a Request. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<S> IntoEndpointService<(S,)> for S
where S: Service<Request>,

Source§

impl<S, State> IntoEndpointServiceWithState<(S,), State> for S
where S: Service<Request>,

Source§

type Service = S

Source§

fn into_endpoint_service_with_state( self, _state: State, ) -> <S as IntoEndpointServiceWithState<(S,), State>>::Service

convert the type into a rama_core::Service with state.
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> RamaFrom<T> for U
where U: From<T>,

Source§

fn rama_from(value: T) -> U

Source§

impl<T, U, CrateMarker> RamaInto<U, CrateMarker> for T
where U: RamaFrom<T, CrateMarker>,

Source§

fn rama_into(self) -> U

Source§

impl<T, U> RamaTryFrom<T> for U
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

Source§

fn rama_try_from(value: T) -> Result<U, <U as RamaTryFrom<T>>::Error>

Source§

impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for T
where U: RamaTryFrom<T, CrateMarker>,

Source§

type Error = <U as RamaTryFrom<T, CrateMarker>>::Error

Source§

fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T, CrateMarker>>::Error>

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more