Struct ajars_actix_web::actix_web::Route [−][src]
pub struct Route { /* fields omitted */ }
Expand description
Resource route definition
Route uses builder-like pattern for configuration. If handler is not explicitly set, default 404 Not Found handler is used.
Implementations
Add method guard to the route.
App::new().service(web::resource("/path").route( web::get() .method(http::Method::CONNECT) .guard(guard::Header("content-type", "text/plain")) .to(|req: HttpRequest| HttpResponse::Ok())) );
Add guard to the route.
App::new().service(web::resource("/path").route( web::route() .guard(guard::Get()) .guard(guard::Header("content-type", "text/plain")) .to(|req: HttpRequest| HttpResponse::Ok())) );
Set handler function, use request extractors for parameters.
Examples
use actix_web::{web, http, App}; use serde::Deserialize; #[derive(Deserialize)] struct Info { username: String, } /// extract path info using serde async fn index(info: web::Path<Info>) -> String { format!("Welcome {}!", info.username) } fn main() { let app = App::new().service( web::resource("/{username}/index.html") // <- define path parameters .route(web::get().to(index)) // <- register handler ); }
It is possible to use multiple extractors for one handler function.
use actix_web::{web, App}; #[derive(Deserialize)] struct Info { username: String, } /// extract path info using serde async fn index(path: web::Path<Info>, query: web::Query<HashMap<String, String>>, body: web::Json<Info>) -> String { format!("Welcome {}!", path.username) } fn main() { let app = App::new().service( web::resource("/{username}/index.html") // <- define path parameters .route(web::get().to(index)) ); }
pub fn service<S, E>(self, service_factory: S) -> Route where
E: Into<Error> + 'static,
S: ServiceFactory<ServiceRequest, Response = ServiceResponse<AnyBody>, Error = E, InitError = (), Config = ()> + 'static,
pub fn service<S, E>(self, service_factory: S) -> Route where
E: Into<Error> + 'static,
S: ServiceFactory<ServiceRequest, Response = ServiceResponse<AnyBody>, Error = E, InitError = (), Config = ()> + 'static,
Set raw service to be constructed and called as the request handler.
Examples
struct HelloWorld; impl Service<ServiceRequest> for HelloWorld { type Response = ServiceResponse; type Error = Infallible; type Future = LocalBoxFuture<'static, Result<Self::Response, Self::Error>>; always_ready!(); fn call(&self, req: ServiceRequest) -> Self::Future { let (req, _) = req.into_parts(); let res = HttpResponse::Ok() .insert_header(header::ContentType::plaintext()) .body("Hello world!"); Box::pin(async move { Ok(ServiceResponse::new(req, res)) }) } } App::new().route( "/", web::get().service(fn_factory(|| async { Ok(HelloWorld) })), );
Trait Implementations
type Response = ServiceResponse<AnyBody>
type Response = ServiceResponse<AnyBody>
Responses given by the created services.
type Service = RouteService
type Service = RouteService
The kind of Service
created by this factory.
type Future = Pin<Box<dyn Future<Output = Result<<Route as ServiceFactory<ServiceRequest>>::Service, <Route as ServiceFactory<ServiceRequest>>::InitError>> + 'static, Global>>
type Future = Pin<Box<dyn Future<Output = Result<<Route as ServiceFactory<ServiceRequest>>::Service, <Route as ServiceFactory<ServiceRequest>>::InitError>> + 'static, Global>>
The future of the Service
instance.g
Create and return a new service asynchronously.
Auto Trait Implementations
impl !RefUnwindSafe for Route
impl !UnwindSafe for Route
Blanket Implementations
Mutably borrows from an owned value. Read more
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
pub fn into_factory(self) -> SF
pub fn into_factory(self) -> SF
Convert Self
to a ServiceFactory
type Output = T
type Output = T
Should always be Self
Map this service’s output to a different type, returning a new service of the resulting type. Read more
Map this service’s error to a different error, returning a new service.
fn map_init_err<F, E>(self, f: F) -> MapInitErr<Self, F, Req, E> where
F: Fn(Self::InitError) -> E + Clone,
fn map_init_err<F, E>(self, f: F) -> MapInitErr<Self, F, Req, E> where
F: Fn(Self::InitError) -> E + Clone,
Map this factory’s init error to a different error, returning a new service.
Call another service after call to this one has resolved successfully.
pub fn vzip(self) -> V