Как мне проанализировать параметры, представленные формой в Nickel.rs?
Я создаю веб-приложение с Rust и Nickel.rs. У меня есть маршрут, который отправляет форму с запросом POST.
Я хотел бы иметь возможность использовать данные запроса (данные, возвращаемые из формы), но я не уверен, как это сделать.
// This works and prints 'email=bar&password=foo'
// but how do I get the values separately?
router.post("/login", middleware! { |request, response|
let mut body = String::new();
request.origin.read_to_string(&mut body).unwrap();
format!("{}", body)
});
2 ответа
Я нашел решение, которое работает на данный момент, хотя я не знаю, является ли это "правильным" решением.
extern crate url;
use url::*;
use std::collections::HashMap;
router.post("/login", middleware! { |request, response|
let mut body = String.new();
request.origin.read_to_string(&mut body).unwrap();
let mut data = HashMap::new();
for (key, value) in form_urlencoded::parse(body.as_bytes()) {
data.insert(key, value);
}
println!("{:?}", data) # {'password': 'bar', 'email': 'far'}
});
Я бы сделал это так:
router.post("/login", middleware! { |request, response|
let form_body = try_with!(response, request.form_body());
let user = form_body.get("username").unwrap_or_default();
let pass = form_body.get("password").unwrap_or_default();
...
}
Я хотел бы знать, что response
делает в этом try_with!
хоть.