繁体   English   中英

如何解析Nickel.rs中表单提交的参数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM