salvo-rs / salvo

A powerful web framework built with a simplified design.
https://salvo.rs
Apache License 2.0
3.26k stars 197 forks source link

根据例子设置自定义页面404,发现res.status_code 一直是None #876

Closed stevensu1977 closed 4 weeks ago

stevensu1977 commented 1 month ago

let router = Router::new() .get(hello) .push(Router::with_path("api") .push(Router::with_path("user").get(get_user)) .push(Router::with_path("user_default").get( get_default_user)) .push(Router::with_path("user_default_string").get( get_default_user_string)) .push(Router::with_path("ip").get(get_ip)) .push(Router::with_path("rss/").get(get_rss)) ).hoop(Logger::new());

let servic = Service::new(router).catcher(Catcher::default().hoop(handler::handle404));

......

[handler]

pub async fn handle404(res: &mut Response, ctrl: &mut FlowCtrl) { println!("{:?}",res.status_code); if let Some(StatusCode::NOT_FOUND) = res.status_code { res.render("Custom 404 Error Page"); ctrl.skip_rest(); } }

chrislearn commented 1 month ago

如果没有 handler 写入状态为 404, 那状态为 None, 你可以把 None 当成 404 处理。