Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

142 Commits

Repository files navigation

body-parser

Build StatusCrates.io

Body parsing plugins for the Iron web framework.

Example

externcrate iron;externcrate bodyparser;externcrate persistent;#[macro_use]externcrate serde_derive;use persistent::Read;use iron::status;use iron::prelude::*;#[derive(Debug,Clone,Deserialize)]structMyStructure{a:String,b:Option<String>,}fnlog_body(req:&mutRequest) -> 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))}constMAX_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"}'`fnmain(){letmut chain = Chain::new(log_body);
chain.link_before(Read::<bodyparser::MaxBodyLength>::one(MAX_BODY_LENGTH));Iron::new(chain).http("localhost:3000").unwrap();}

Overview

body-parser is a part of Iron's core bundle. It contains:

  • Raw - performs body parsing to string with limiting.
  • Json - parses body into Json.
  • Struct - parses body into a struct using Serde.

Installation

If you're using a Cargo.toml to manage dependencies, just add body-parser to the toml:

[dependencies.bodyparser]
git = "https://github.com/iron/body-parser.git"

Otherwise, cargo build, and the rlib will be in your target directory.

Along with the online documentation, you can build a local copy with make doc.

Get Help

One of us (@reem, @zzmp, @theptrk, @mcreinhard) is usually on #iron on the mozilla irc. Come say hi and ask any questions you might have. We are also usually on #rust and #rust-webdev.

About

JSON body parsing for iron

Resources

Contributing

Stars

53 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages