diff --git a/examples/Cargo.toml b/examples/Cargo.toml index 78f920b..d0f5da1 100644 --- a/examples/Cargo.toml +++ b/examples/Cargo.toml @@ -1,6 +1,7 @@ [workspace] members = [ "application", + "front-page", "getting-started", "server", "url-dispatch", diff --git a/examples/front-page/Cargo.toml b/examples/front-page/Cargo.toml new file mode 100644 index 0000000..8365d5a --- /dev/null +++ b/examples/front-page/Cargo.toml @@ -0,0 +1,8 @@ +[workspace] +members = [ + "main-example", + "flexible-responders", + "easy-form-handling", + "request-routing", + "powerful-extractors", +] diff --git a/examples/front-page/easy-form-handling/Cargo.toml b/examples/front-page/easy-form-handling/Cargo.toml new file mode 100644 index 0000000..07f6a66 --- /dev/null +++ b/examples/front-page/easy-form-handling/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "easy-form-handling" +version = "0.1.0" +edition = "2018" + +[dependencies] +actix-web = "1.0" +serde = "1.0" diff --git a/examples/front-page/easy-form-handling/src/main.rs b/examples/front-page/easy-form-handling/src/main.rs new file mode 100644 index 0000000..117ae99 --- /dev/null +++ b/examples/front-page/easy-form-handling/src/main.rs @@ -0,0 +1,35 @@ +// +use actix_web::{web, App, HttpResponse, HttpServer}; +use serde::Deserialize; + +#[derive(Deserialize)] +struct Register { + username: String, + country: String, +} + +fn index() -> actix_web::Result { + Ok(HttpResponse::Ok() + .content_type("text/html; charset=utf-8") + .body(include_str!("../static/form.html"))) +} + +fn register(params: web::Form) -> actix_web::Result { + Ok(HttpResponse::Ok().body(format!( + "Hello {} from {}!", + params.username, params.country + ))) +} + +fn main() { + HttpServer::new(|| { + App::new() + .route("/", web::get().to(index)) + .route("/register", web::post().to(register)) + }) + .bind("127.0.0.1:8000") + .expect("Can not bind to port 8000") + .run() + .unwrap(); +} +// diff --git a/examples/front-page/easy-form-handling/static/form.html b/examples/front-page/easy-form-handling/static/form.html new file mode 100644 index 0000000..5800bde --- /dev/null +++ b/examples/front-page/easy-form-handling/static/form.html @@ -0,0 +1,30 @@ + + + + + Forms + + + +

Will hit handle_post_1

+ +
+ + + + + + + +
+ +
+ + + diff --git a/examples/front-page/flexible-responders/Cargo.toml b/examples/front-page/flexible-responders/Cargo.toml new file mode 100644 index 0000000..ed8f468 --- /dev/null +++ b/examples/front-page/flexible-responders/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "flexible-responders" +version = "0.1.0" +edition = "2018" + +[dependencies] diff --git a/examples/front-page/flexible-responders/src/main.rs b/examples/front-page/flexible-responders/src/main.rs new file mode 100644 index 0000000..6846fcf --- /dev/null +++ b/examples/front-page/flexible-responders/src/main.rs @@ -0,0 +1,5 @@ +// +fn main() { + println!("Hello, world!"); +} +// diff --git a/examples/front-page/main-example/Cargo.toml b/examples/front-page/main-example/Cargo.toml new file mode 100644 index 0000000..96d110d --- /dev/null +++ b/examples/front-page/main-example/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "front-page" +version = "0.1.0" +edition = "2018" + +[dependencies] +actix-web = "1.0" diff --git a/examples/front-page/main-example/src/main.rs b/examples/front-page/main-example/src/main.rs new file mode 100644 index 0000000..4184006 --- /dev/null +++ b/examples/front-page/main-example/src/main.rs @@ -0,0 +1,20 @@ +// +use actix_web::{web, App, HttpRequest, HttpResponse, HttpServer}; + +fn greet(req: HttpRequest) -> HttpResponse { + let name = req.match_info().get("name").unwrap_or("World"); + HttpResponse::Ok().body(format!("Hello {}!", &name)) +} + +fn main() { + HttpServer::new(|| { + App::new() + .service(web::resource("/").to(greet)) + .service(web::resource("/{name}").to(greet)) + }) + .bind("127.0.0.1:8000") + .expect("Can not bind to port 8000") + .run() + .unwrap(); +} +// diff --git a/examples/front-page/powerful-extractors/Cargo.toml b/examples/front-page/powerful-extractors/Cargo.toml new file mode 100644 index 0000000..3547bfc --- /dev/null +++ b/examples/front-page/powerful-extractors/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "powerful-extractors" +version = "0.1.0" +edition = "2018" + +[dependencies] +actix-web = "1.0" diff --git a/examples/front-page/powerful-extractors/src/main.rs b/examples/front-page/powerful-extractors/src/main.rs new file mode 100644 index 0000000..e7a11a9 --- /dev/null +++ b/examples/front-page/powerful-extractors/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +} diff --git a/examples/front-page/request-routing/Cargo.toml b/examples/front-page/request-routing/Cargo.toml new file mode 100644 index 0000000..126c337 --- /dev/null +++ b/examples/front-page/request-routing/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "request-routing" +version = "0.1.0" +edition = "2018" + +[dependencies] +actix-web = "1.0" diff --git a/examples/front-page/request-routing/src/main.rs b/examples/front-page/request-routing/src/main.rs new file mode 100644 index 0000000..411c9a9 --- /dev/null +++ b/examples/front-page/request-routing/src/main.rs @@ -0,0 +1,23 @@ +// +use actix_web::{web, App, HttpRequest, HttpResponse, HttpServer}; + +fn index(_req: HttpRequest) -> HttpResponse { + HttpResponse::Ok().body("Hello from the index page.") +} + +fn hello(path: web::Path) -> HttpResponse { + HttpResponse::Ok().body(format!("Hello {}!", &path)) +} + +fn main() { + HttpServer::new(|| { + App::new() + .service(web::resource("/").to(index)) + .service(web::resource("/{name}").to(hello)) + }) + .bind("127.0.0.1:8000") + .unwrap() + .run() + .unwrap(); +} +//