From a7c8116fcd21ef74f8bef2d0027fe7b1236e6eb1 Mon Sep 17 00:00:00 2001 From: Sven-Hendrik Haase Date: Tue, 30 Jul 2019 19:03:55 +0200 Subject: [PATCH] Add bit about wrap_fn to middlewares page (#104) --- content/docs/middleware.md | 5 +++++ examples/middleware/src/main.rs | 1 + examples/middleware/src/wrap_fn.rs | 20 ++++++++++++++++++++ 3 files changed, 26 insertions(+) create mode 100644 examples/middleware/src/wrap_fn.rs diff --git a/content/docs/middleware.md b/content/docs/middleware.md index 0a9537e..7bea23e 100644 --- a/content/docs/middleware.md +++ b/content/docs/middleware.md @@ -29,6 +29,10 @@ The following demonstrates creating a simple middleware: {{< include-example example="middleware" file="main.rs" section="simple" >}} +Alternatively, for simple use cases, you can use [*wrap_fn*][wrap_fn] to create small, ad-hoc middlewares: + +{{< include-example example="middleware" file="wrap_fn.rs" section="wrap-fn" >}} + > Actix-web provides several useful middlewares, such as *logging*, *user sessions*, > *compress*, etc. @@ -130,3 +134,4 @@ into a response. [envlogger]: https://docs.rs/env_logger/*/env_logger/ [servicetrait]: https://docs.rs/actix-web/1.0.2/actix_web/dev/trait.Service.html [transformtrait]: https://docs.rs/actix-web/1.0.2/actix_web/dev/trait.Transform.html +[wrap_fn]: https://docs.rs/actix-web/1.0.5/actix_web/struct.App.html#method.wrap_fn diff --git a/examples/middleware/src/main.rs b/examples/middleware/src/main.rs index 22ed711..6ccdb86 100644 --- a/examples/middleware/src/main.rs +++ b/examples/middleware/src/main.rs @@ -2,6 +2,7 @@ pub mod default_headers; pub mod errorhandler; pub mod logger; pub mod user_sessions; +pub mod wrap_fn; // use actix_service::{Service, Transform}; diff --git a/examples/middleware/src/wrap_fn.rs b/examples/middleware/src/wrap_fn.rs new file mode 100644 index 0000000..18c139e --- /dev/null +++ b/examples/middleware/src/wrap_fn.rs @@ -0,0 +1,20 @@ +// +use actix_service::Service; +use actix_web::{web, App}; +use futures::future::Future; + +fn main() { + let app = App::new() + .wrap_fn(|req, srv| { + println!("Hi from start. You requested: {}", req.path()); + srv.call(req).map(|res| { + println!("Hi from response"); + res + }) + }) + .route( + "/index.html", + web::get().to(|| "Hello, middleware!"), + ); +} +//