2017-10-13 38 views
0

我有鐵2條路線:解析中鐵的URL,並得到一個動態部分

  1. /something/:some_int#整數
  2. /something2/:some_str#字符串

我怎樣才能得到這些:some_{int, str}部分人?

fn my_something_int_route_handler(req: &mut Request) -> IronResult<Response> { 
    let ref query = req.extensions.get::<Router>().unwrap().find("query").unwrap_or("/"); 

    //what next ??? 
    // how can I get the ":some_int" from :/something/:some_int 
fn my_something2_str_route_handler(req: &mut Request) -> IronResult<Response> { 
    let ref query = req.extensions.get::<Router>().unwrap().find("query").unwrap_or("/"); 

    // how can I get the ":some_str" from :/something/:some_str 

回答

0

使用router crate

let mut router = Router::new(); 
router.get("https://stackoverflow.com/users/:user_id", user_show, "user_show"); 
let _server = Iron::new(router).http(("127.0.0.1", 8787)).unwrap(); 

內部處理程序,你會得到一個參考RouterParams,它可以讓你對每一個命名參數的值。需要注意的是參數Params::find指定名稱匹配定義路由時:

fn user_show(req: &mut Request) -> IronResult<Response> { 
    let router = req.extensions.get::<Router>() 
     .expect("Unable to get router"); 
    user_id = router.find("user_id") 
     .expect("A user id is required"); 
} 

一個你有一個參數爲字符串,你parse it into a number like anywhere else in Rust