11///|
22fn main {
3- let app = @mocket.new(logger=@mocket.new_production_logger() )
3+ let app = @mocket.new()
44
55 // Register global middleware
66 app
7- ..use_middleware((event, next) => {
8- println("📝 Request : \{event.req.http_method} \{event.req.url}")
9- next()
10- })
7+ ..use_middleware(logger_middleware)
118 ..use_middleware(@cors.handle_cors())
129
1310 // Text Response
14- ..get("/", _event => Text ( "⚡️ Tadaa !") )
11+ ..get("/", _event => "⚡️ Tadaa !")
1512
1613 // Hello World
17- ..on("GET ", "/hello", _ => Text ( "Hello world!") )
14+ ..on("GET ", "/hello", _ => "Hello world!")
1815 ..group("/api", group => {
1916 // 添加组级中间件
2017 group.use_middleware((event, next) => {
@@ -23,61 +20,54 @@ fn main {
2320 )
2421 next()
2522 })
26- group.get("/hello", _ => Text ("Hello world!"))
27- group.get("/json", _ => Json ({
28- "name": "John Doe ",
29- "age": 30,
30- "city": "New York ",
31- }))
23+ group.get("/hello", _ => "Hello world!")
24+ group.get("/json", _ => (
25+ { "name": "John Doe ", "age": 30, "city": "New York " } : Json ))
3226 })
3327
3428 // JSON Response
35- ..get("/json", _event => Json ({
36- "name": "John Doe ",
37- "age": 30,
38- "city": "New York ",
39- }))
29+ ..get("/json", _event => (
30+ { "name": "John Doe ", "age": 30, "city": "New York " } : Json ))
4031
4132 // Async Response
4233 ..get("/async_data", async fn(_event) noraise {
43- Json ({ "name": "John Doe ", "age": 30, "city": "New York " })
34+ ({ "name": "John Doe ", "age": 30, "city": "New York " } : Json )
4435 })
4536
4637 // Dynamic Routes
4738 // /hello2/World = Hello, World!
4839 ..get("/hello/:name", event => {
4940 let name = event.params.get("name").unwrap_or("World ")
50- Text ( "Hello , \{name}!")
41+ "Hello , \{name}!"
5142 })
5243 // /hello2/World = Hello, World!
5344 ..get("/hello2/*", event => {
5445 let name = event.params.get("_").unwrap_or("World ")
55- Text ( "Hello , \{name}!")
46+ "Hello , \{name}!"
5647 })
5748
5849 // Wildcard Routes
5950 // /hello3/World/World = Hello, World/World!
6051 ..get("/hello3/**", event => {
6152 let name = event.params.get("_").unwrap_or("World ")
62- Text ( "Hello , \{name}!")
53+ "Hello , \{name}!"
6354 })
6455
6556 // Echo Server
66- ..post("/echo", e => e.req.body )
57+ ..post("/echo", e => e.req)
6758
6859 // 404 Page
69- ..get("/404", e => {
70- e.res.status_code = 404
71- HTML (
60+ ..get("/404", _ => @mocket.HttpResponse ::new(NotFound ).body(
61+ @mocket.html(
7262 (
7363 #|<html>
7464 #|<body>
7565 #| <h1>404</h1>
7666 #|</body>
7767 #|</html>
7868 ),
79- )
80- } )
69+ ),
70+ ) )
8171
8272 // Print Server URL
8373 for path in app.mappings.keys() {
@@ -87,3 +77,15 @@ fn main {
8777 // Serve
8878 app.serve(port=4000)
8979}
80+
81+ ///|
82+ pub async fn logger_middleware(
83+ event : @mocket.MocketEvent ,
84+ next : async () -> &@mocket.Responder noraise,
85+ ) -> &@mocket.Responder noraise {
86+ let start_time = @env.now()
87+ let res = next()
88+ let duration = @env.now() - start_time
89+ println("\{event.req.http_method} \{event.req.url} - \{duration}ms")
90+ res
91+ }
0 commit comments