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日 |
#723 在 HTTP服务器
每月 87 次下载
32KB
624 行
星云表单
nebula_form
是一个小巧的Rust库,它提供了一个简单的接口来处理表单数据。
功能
- 解析请求体中的
application/x-www-form-urlencoded
和multipart/form-data
表单(目前仅支持warp
)。 - 可操作的
Form
对象(可以添加、删除字段等) - 从
Form
对象创建application/x-www-form-urlencoded
和multipart/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