Skip to main content

ServiceBuilderExt

Trait ServiceBuilderExt 

Source
pub trait ServiceBuilderExt<L>: Sealed<L> + Sized {
    // Required methods
    fn map_response_body<F>(
        self,
        f: F,
    ) -> ServiceBuilder<Stack<MapResponseBodyLayer<F>, L>>;
    fn decompression(self) -> ServiceBuilder<Stack<DecompressionLayer, L>>;
    fn trace_for_http(
        self,
    ) -> ServiceBuilder<Stack<TraceLayer<HttpMakeClassifier>, L>>;
    fn trace_for_grpc(
        self,
    ) -> ServiceBuilder<Stack<TraceLayer<GrpcMakeClassifier>, L>>;
    fn follow_redirects(
        self,
    ) -> ServiceBuilder<Stack<FollowRedirectLayer<Standard>, L>>;
}
Expand description

Extension trait that adds methods to tower::ServiceBuilder for adding middleware from tower-http.

§Example

use http::{Request, Response, header::HeaderName};
use bytes::Bytes;
use http_body_util::Full;
use std::{time::Duration, convert::Infallible};
use tower::{ServiceBuilder, ServiceExt, Service};
use tower_http::ServiceBuilderExt;

async fn handle(request: Request<Full<Bytes>>) -> Result<Response<Full<Bytes>>, Infallible> {
    Ok(Response::new(Full::default()))
}

let service = ServiceBuilder::new()
    // Methods from tower
    .timeout(Duration::from_secs(30))
    // Methods from tower-http
    .trace_for_http()
    .propagate_header(HeaderName::from_static("x-request-id"))
    .service_fn(handle);

Required Methods§

Source

fn map_response_body<F>( self, f: F, ) -> ServiceBuilder<Stack<MapResponseBodyLayer<F>, L>>

Apply a transformation to the response body.

See tower_http::map_response_body for more details.

Source

fn decompression(self) -> ServiceBuilder<Stack<DecompressionLayer, L>>

Decompress response bodies.

See tower_http::decompression for more details.

Source

fn trace_for_http( self, ) -> ServiceBuilder<Stack<TraceLayer<HttpMakeClassifier>, L>>

High level tracing that classifies responses using HTTP status codes.

This method does not support customizing the output, to do that use TraceLayer instead.

See tower_http::trace for more details.

Source

fn trace_for_grpc( self, ) -> ServiceBuilder<Stack<TraceLayer<GrpcMakeClassifier>, L>>

High level tracing that classifies responses using gRPC headers.

This method does not support customizing the output, to do that use TraceLayer instead.

See tower_http::trace for more details.

Source

fn follow_redirects( self, ) -> ServiceBuilder<Stack<FollowRedirectLayer<Standard>, L>>

Follow redirect resposes using the Standard policy.

See tower_http::follow_redirect for more details.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl<L> ServiceBuilderExt<L> for ServiceBuilder<L>

Implementors§