[英]How do I parse parameters submitted by a form in Nickel.rs?
我正在用Rust和Nickel.rs构建一个Web应用程序。 我有一条通过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)
});
我找到了一个目前可以使用的解决方案,尽管我不知道这是否是“正确的”解决方案。
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!
虽然。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.