0

我在 Iron 有 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
4

1 回答 1

0

使用路由器板条箱

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

在您的处理程序中,您会获得对Router's的引用,Params它可以让您获取每个命名参数的值。请注意,参数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");
}

一个你有一个参数作为字符串,你把它解析成一个数字,就像 Rust 中的其他任何地方一样

于 2017-10-13T13:32:54.117 回答