1use expressjs::prelude::*;
2use hyper::header::HeaderValue;
3
4#[tokio::main]
5async fn main() {
6 let mut app = express();
7
8 app.use_global(CorsMiddleware::permissive());
10
11 app.use_global(NormalizePathMiddleware::new());
13
14 app.use_with("/api", |req: &mut Request, _res: &mut Response| {
16 let path = req.uri().path().to_owned();
17 async move {
18 println!("API middleware triggered for: {}", path);
19 next_res()
20 }
21 });
22
23 app.get("/api/v1", async |_req, res| res.send_text("API Response"));
24
25 app.use_global(LoggingMiddleware);
27
28 app.use_global(|req: &mut Request, res: &mut Response| {
30 let uri = req.uri().to_string();
31 res.header("X-Custom-Global", HeaderValue::from_static("Enabled"));
32 async move {
33 println!("Custom global middleware for: {}", uri);
34 next_res()
35 }
36 });
37
38 app.get("/hello", async |_req, res| res.send_text("Hello!"));
39
40 app.listen(9000, async |port| {
41 println!("🚀 Server running on http://localhost:{port}/");
42 })
43 .await;
44}