2017-10-13 7 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. 경로가 정의 될 때 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 같은 매개 변수가 있습니다.