axum/examples/routes-and-handlers-close-together/src/main.rs

52 lines
1 KiB
Rust

//! Run with
//!
//! ```not_rust
//! cargo run -p example-routes-and-handlers-close-together
//! ```
use axum::{
routing::{get, post, MethodRouter},
Router,
};
#[tokio::main]
async fn main() {
let app = Router::new()
.merge(root())
.merge(get_foo())
.merge(post_foo());
let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
println!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
}
fn root() -> Router {
async fn handler() -> &'static str {
"Hello, World!"
}
route("/", get(handler))
}
fn get_foo() -> Router {
async fn handler() -> &'static str {
"Hi from `GET /foo`"
}
route("/foo", get(handler))
}
fn post_foo() -> Router {
async fn handler() -> &'static str {
"Hi from `POST /foo`"
}
route("/foo", post(handler))
}
fn route(path: &str, method_router: MethodRouter<()>) -> Router {
Router::new().route(path, method_router)
}