2017-10-13 9 views
0

動的な部分の取得:アイアンでURLを解析して、私はアイアンでの2つのルート持っ

  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への参照を取得します。

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などのパラメータを持っている:Params::findへの引数は、ルートが定義されたときに割り当てられた名前と一致していることに注意してください。

関連する問題