7个版本

0.1.6 2020年6月22日
0.1.5 2020年5月14日
0.1.4 2020年4月29日
0.1.0 2020年3月11日

#723HTTP服务器

Download history 87/week @ 2024-07-27

每月 87 次下载

MPL-2.0 许可证

32KB
624

星云表单

nebula_form 是一个小巧的Rust库,它提供了一个简单的接口来处理表单数据。

功能

  • 解析请求体中的 application/x-www-form-urlencodedmultipart/form-data 表单(目前仅支持 warp)。
  • 可操作的 Form 对象(可以添加、删除字段等)
  • Form 对象创建 application/x-www-form-urlencodedmultipart/form-data 请求体。

非功能

  • 单个表单字段的多个值
    • 请注意,目前还没有标准的方法来做这件事。

用法

use nebula_form::{Form, Field};
use warp::Filter;

fn main() {
    let form = Form::new();
    form.insert("field-foo", Field::Text(String::from("contents")));

    // Don't use `panic!` in actual code
    match form.get("field-foo") {
        None => panic!("Field expected"),
        Some(field) => {
            match field {
                Field::Text(txt) => println!(txt),
                Field::File(_) => panic!("This should not be a file!"),
            }
        }
    }

    // `make_request` doesn't actually exist and stands in for any usual way
    // of creating an HTTP request.
    make_request("POST", form.to_url_encoded().as_bytes());
    make_request("POST", form.to_multipart_bytes());

    // When using warp, the `form_filter` function parses the request body into
    // a `Form`.
    let hi = warp::path("some-form")
        .and(warp::method::post())
        .and(nebula_form::form_filter())
        .map(|form: Form| {
            format!("Hello {}!", form.get("name").unwrap())
        });
}

依赖关系

~0.9–11MB
~125K SLoC