15 个版本 (8 个破坏性更新)
使用旧的 Rust 2015
0.8.0 | 2017 年 11 月 21 日 |
---|---|
0.7.0 | 2017 年 4 月 21 日 |
0.6.0 | 2017 年 2 月 3 日 |
0.4.1 | 2016 年 8 月 10 日 |
0.0.1 | 2014 年 12 月 8 日 |
#1981 in 网页编程
每月下载量 4,181 次
用于 43 个 Crates(15 个直接使用)
12KB
177 行
body-parser
Iron 网页框架的 Body 解析插件。
示例
extern crate iron;
extern crate bodyparser;
extern crate persistent;
#[macro_use]
extern crate serde_derive;
use persistent::Read;
use iron::status;
use iron::prelude::*;
#[derive(Debug, Clone, Deserialize)]
struct MyStructure {
a: String,
b: Option<String>,
}
fn log_body(req: &mut Request) -> IronResult<Response> {
let body = req.get::<bodyparser::Raw>();
match body {
Ok(Some(body)) => println!("Read body:\n{}", body),
Ok(None) => println!("No body"),
Err(err) => println!("Error: {:?}", err)
}
let json_body = req.get::<bodyparser::Json>();
match json_body {
Ok(Some(json_body)) => println!("Parsed body:\n{:?}", json_body),
Ok(None) => println!("No body"),
Err(err) => println!("Error: {:?}", err)
}
let struct_body = req.get::<bodyparser::Struct<MyStructure>>();
match struct_body {
Ok(Some(struct_body)) => println!("Parsed body:\n{:?}", struct_body),
Ok(None) => println!("No body"),
Err(err) => println!("Error: {:?}", err)
}
Ok(Response::with(status::Ok))
}
const MAX_BODY_LENGTH: usize = 1024 * 1024 * 10;
// While the example is running, try the following curl commands and see how they are
// logged by the Rust server process:
//
// `curl -i "localhost:3000/" -H "application/json" -d '{"name":"jason","age":"2"}'`
// `curl -i "localhost:3000/" -H "application/json" -d '{"a":"jason","b":"2"}'`
// `curl -i "localhost:3000/" -H "application/json" -d '{"a":"jason"}'`
fn main() {
let mut chain = Chain::new(log_body);
chain.link_before(Read::<bodyparser::MaxBodyLength>::one(MAX_BODY_LENGTH));
Iron::new(chain).http("localhost:3000").unwrap();
}
概览
body-parser 是 Iron 的 核心包 的一部分。它包含
- 原始 - 以限制的方式执行 Body 解析到字符串。
- JSON - 将 Body 解析为 JSON。
- 结构 - 使用 Serde 将 Body 解析为结构。
安装
如果您使用 Cargo.toml
管理依赖项,只需将 body-parser 添加到 toml
[dependencies.bodyparser]
git = "https://github.com/iron/body-parser.git"
否则,运行 cargo build
,rlib 将位于您的 target
目录中。
文档
除了在线文档外,您还可以使用 make doc
构建本地副本。
示例
获取帮助
我们中的一员(@reem,@zzmp,@theptrk,@mcreinhard)通常在 mozilla irc 的 #iron
上。过来打招呼并提问您可能有的任何问题。我们通常也在 #rust
和 #rust-webdev
上。
依赖项
~5.5MB
~130K SLoC