2017-09-29 48 views
0

guide on Rocket's site建議可以對動態路由進行排名。該示例使用動態部分的不同類型作爲路由的匹配條件。當我把一個網址具有比usize其他任何東西,我得到以下錯誤:Rocket不解析URL中的RawStr以匹配路由

GET /user/three text/html: 
    => Matched: GET /user/<id> 
    => Failed to parse 'id': RawStr("three") 
    => Outcome: Forward 
    => Error: No matching routes for GET /user/three text/html. 
    => Warning: Responding with 404 Not Found catcher. 
    => Response succeeded. 

我正在使用的代碼:

#![feature(plugin)] 
#![plugin(rocket_codegen)] 

extern crate rocket; 
use rocket::http::RawStr; 

#[get("/user/<id>")] 
fn user(id: usize) -> String { format!("First rank") } 

#[get("/user/<id>", rank = 2)] 
fn user_int(id: isize) -> String { format!("second rank") } 

#[get("/user/<id>", rank = 3)] 
fn user_str(id: &RawStr) -> String { format!("last rank") } 

fn main() { 
    rocket::ignite().mount("/", routes![user]).launch(); 
} 

我希望一個404 error一個頁面,而不是在/user/three顯示測試last rank。爲什麼不這樣做?

回答

1

火箭不知道你的路由,除非你告訴它他們

fn main() { 
    rocket::ignite().mount("/", routes![user, user_int, user_str]).launch(); 
    //          ^^^^^^^^^^^^^^^^^^^^ 
} 
+0

是的,就想通了這第二個。 –