Struct actix_web::App [] [src]

pub struct App<S = ()> { /* fields omitted */ }

Structure that follows the builder pattern for building application instances.

Methods

impl App<()>
[src]

[src]

Create application with empty state. Application can be configured with a builder-like pattern.

impl<S> App<S> where
    S: 'static, 
[src]

[src]

Create application with specified state. Application can be configured with a builder-like pattern.

State is shared with all resources within same application and could be accessed with HttpRequest::state() method.

[src]

Set application prefix.

Only requests that match the application's prefix get processed by this application.

The application prefix always contains a leading slash (/). If the supplied prefix does not contain leading slash, it is inserted.

Prefix should consist of valid path segments. i.e for an application with the prefix /app any request with the paths /app, /app/ or /app/test would match, but the path /application would not.

In the following example only requests with an /app/ path prefix get handled. Requests with path /app/test/ would be handled, while requests with the paths /application or /other/... would return NOT FOUND.

use actix_web::{http, App, HttpResponse};

fn main() {
    let app = App::new()
        .prefix("/app")
        .resource("/test", |r| {
             r.get().f(|_| HttpResponse::Ok());
             r.head().f(|_| HttpResponse::MethodNotAllowed());
        })
        .finish();
}

[src]

Configure route for a specific path.

This is a simplified version of the App::resource() method. Handler functions need to accept one request extractor argument.

This method could be called multiple times, in that case multiple routes would be registered for same resource path.

use actix_web::{http, App, HttpRequest, HttpResponse};

fn main() {
    let app = App::new()
        .route("/test", http::Method::GET,
               |_: HttpRequest| HttpResponse::Ok())
        .route("/test", http::Method::POST,
               |_: HttpRequest| HttpResponse::MethodNotAllowed());
}

[src]

Configure resource for a specific path.

Resources may have variable path segments. For example, a resource with the path /a/{name}/c would match all incoming requests with paths such as /a/b/c, /a/1/c, or /a/etc/c.

A variable segment is specified in the form {identifier}, where the identifier can be used later in a request handler to access the matched value for that segment. This is done by looking up the identifier in the Params object returned by HttpRequest.match_info() method.

By default, each segment matches the regular expression [^{}/]+.

You can also specify a custom regex in the form {identifier:regex}:

For instance, to route GET-requests on any route matching /users/{userid}/{friend} and store userid and friend in the exposed Params object:

use actix_web::{http, App, HttpResponse};

fn main() {
    let app = App::new()
        .resource("/test", |r| {
             r.get().f(|_| HttpResponse::Ok());
             r.head().f(|_| HttpResponse::MethodNotAllowed());
        });
}

[src]

Default resource to be used if no matching route could be found.

[src]

Set default content encoding. ContentEncoding::Auto is set by default.

[src]

Register an external resource.

External resources are useful for URL generation purposes only and are never considered for matching at request time. Calls to HttpRequest::url_for() will work as expected.

use actix_web::{App, HttpRequest, HttpResponse, Result};

fn index(mut req: HttpRequest) -> Result<HttpResponse> {
   let url = req.url_for("youtube", &["oHg5SJYRHA0"])?;
   assert_eq!(url.as_str(), "https://youtube.com/watch/oHg5SJYRHA0");
   Ok(HttpResponse::Ok().into())
}

fn main() {
    let app = App::new()
        .resource("/index.html", |r| r.get().f(index))
        .external_resource("youtube", "https://youtube.com/watch/{video_id}")
        .finish();
}

[src]

Configure handler for specific path prefix.

A path prefix consists of valid path segments, i.e for the prefix /app any request with the paths /app, /app/ or /app/test would match, but the path /application would not.

use actix_web::{http, App, HttpRequest, HttpResponse};

fn main() {
    let app = App::new()
        .handler("/app", |req: HttpRequest| {
            match *req.method() {
                http::Method::GET => HttpResponse::Ok(),
                http::Method::POST => HttpResponse::MethodNotAllowed(),
                _ => HttpResponse::NotFound(),
        }});
}

[src]

Register a middleware.

[src]

Run external configuration as part of the application building process

This function is useful for moving parts of configuration to a different module or event library. For example we can move some of the resources' configuration to different module.

use actix_web::{App, HttpResponse, fs, middleware};

// this function could be located in different module
fn config(app: App) -> App {
    app
        .resource("/test", |r| {
             r.get().f(|_| HttpResponse::Ok());
             r.head().f(|_| HttpResponse::MethodNotAllowed());
        })
}

fn main() {
    let app = App::new()
        .middleware(middleware::Logger::default())
        .configure(config)  // <- register resources
        .handler("/static", fs::StaticFiles::new("."));
}

[src]

Finish application configuration and create HttpHandler object.

Important traits for Box<W>
[src]

Convenience method for creating Box<HttpHandler> instances.

This method is useful if you need to register multiple application instances with different state.

use actix_web::{server, App, HttpResponse};

struct State1;

struct State2;

fn main() {
    server::new(|| { vec![
        App::with_state(State1)
             .prefix("/app1")
             .resource("/", |r| r.f(|r| HttpResponse::Ok()))
             .boxed(),
        App::with_state(State2)
             .prefix("/app2")
             .resource("/", |r| r.f(|r| HttpResponse::Ok()))
             .boxed() ]})
        .bind("127.0.0.1:8080").unwrap()
        .run()
}

Trait Implementations

impl Default for App<()>
[src]

[src]

Returns the "default value" for a type. Read more

impl<S: 'static> IntoHttpHandler for App<S>
[src]

The associated type which is result of conversion.

[src]

Convert into HttpHandler object.

impl<'a, S: 'static> IntoHttpHandler for &'a mut App<S>
[src]

The associated type which is result of conversion.

[src]

Convert into HttpHandler object.

Auto Trait Implementations

impl<S = ()> !Send for App<S>

impl<S = ()> !Sync for App<S>