Как использовать несколько переменных в маршрутах с никелем?

Никель заявляет, что вы можете использовать переменные в URL, что звучит очень полезно, но возможно ли использовать несколько переменных?

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

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

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

1 ответ

Решение

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

#[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 вместо.

Другие вопросы по тегам