2015-06-19 5 views
2

Nickel утверждает, что вы можете использовать переменные в URL-адресах, что звучит очень полезно, но можно ли использовать несколько переменных?Как использовать несколько переменных в маршрутах с Nickel?

Что-то вроде:

www.example.com/login/:userid?:apikey?:etc 

server.get("/start/:userid?:passwd", middleware! { |request| 
    // format!("This is user: {:?} = {:?}", 
    // request.param("userid"), 
    // request.param("passwd") 
    //); 
}); 
+0

Что происходит, когда вы раскомментируете прокомментированные строки? – Gordon

+0

В этом случае он не выбирает любую переменную. Я пробовал много разных способов, я просто не уверен, что это возможно, документы не упоминают об этом. – user3816764

ответ

2

Вам нужен разделитель. Например:

#[macro_use] extern crate nickel; 

use nickel::Nickel; 

fn main() { 
    let mut server = Nickel::new(); 

    server.utilize(router! { 
     get "/start/:userid/:passwd" => |request, _response| { 
      println!("this is user: {:?} = {:?}", 
        request.param("userid"), 
        request.param("passwd") 
        ); 

      "Hello world!" 
     } 
    }); 

    server.listen("127.0.0.1:6767"); 
} 

Это выглядит из вашего вопроса, как вы могли бы ожидать passwd как своего рода параметр запроса, а не в URL, хотя.

Я бы предостерег вас от создания сеанса с GET, и вместо этого вы должны использовать POST.

+0

О, ха-ха, это был только пример текста. Я бы не посылал такой пароль, не волнуйтесь: P Почему POST через GET? Я не слишком разбираюсь в подобных вещах. – user3816764

+0

см. Http://stackoverflow.com/questions/504947/when-should-i-use-get-or-post-method-whats-the-difference-between-them и его ответы –

Смежные вопросы