use futures::IntoFuture; use actix_web::{ get, middleware, web, App, Error, HttpRequest, HttpResponse, HttpServer, }; #[get("/resource1/{name}/index.html")] fn index(req: HttpRequest, name: web::Path) -> String { println!("REQ: {:?}", req); format!("Hello: {}!\r\n", name) } fn index_async(req: HttpRequest) -> impl IntoFuture { println!("REQ: {:?}", req); Ok("Hello world!\r\n") } #[get("/")] fn no_params() -> &'static str { "Hello world!\r\n" } fn main() -> std::io::Result<()> { std::env::set_var("RUST_LOG", "actix_server=info,actix_web=info"); env_logger::init(); HttpServer::new(|| { App::new() .wrap(middleware::DefaultHeaders::new().header("X-Version", "0.2")) .wrap(middleware::encoding::Compress::default()) .wrap(middleware::Logger::default()) .service(index) .service(no_params) .service( web::resource("/resource2/index.html") .wrap( middleware::DefaultHeaders::new().header("X-Version-R2", "0.3"), ) .default_resource(|r| { r.route(web::route().to(|| HttpResponse::MethodNotAllowed())) }) .route(web::get().to_async(index_async)), ) .service(web::resource("/test1.html").to(|| "Test\r\n")) }) .bind("127.0.0.1:8080")? .workers(1) .run() }