Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/iron/body-parser
JSON body parsing for iron
https://github.com/iron/body-parser
Last synced: 3 months ago
JSON representation
JSON body parsing for iron
- Host: GitHub
- URL: https://github.com/iron/body-parser
- Owner: iron
- License: mit
- Created: 2014-06-16T23:51:31.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2019-02-11T22:28:59.000Z (almost 6 years ago)
- Last Synced: 2024-07-06T23:42:27.245Z (4 months ago)
- Language: Rust
- Size: 71.3 KB
- Stars: 54
- Watchers: 10
- Forks: 27
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
body-parser
====[![Build Status](https://secure.travis-ci.org/iron/body-parser.png?branch=master)](https://travis-ci.org/iron/body-parser)
[![Crates.io](https://img.shields.io/crates/v/bodyparser.svg)](https://crates.io/crates/bodyparser)> Body parsing plugins for the [Iron](https://github.com/iron/iron) web framework.
## Example
```rust
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,
}fn log_body(req: &mut Request) -> IronResult {
let body = req.get::();
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::();
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::>();
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::::one(MAX_BODY_LENGTH));
Iron::new(chain).http("localhost:3000").unwrap();
}
```## Overview
body-parser is a part of Iron's [core bundle](https://github.com/iron/core). 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:
```toml
[dependencies.bodyparser]git = "https://github.com/iron/body-parser.git"
```Otherwise, `cargo build`, and the rlib will be in your `target` directory.
## [Documentation](https://docs.rs/bodyparser/)
Along with the [online documentation](https://docs.rs/bodyparser/),
you can build a local copy with `make doc`.## [Examples](/examples)
## Get Help
One of us ([@reem](https://github.com/reem/), [@zzmp](https://github.com/zzmp/),
[@theptrk](https://github.com/theptrk/), [@mcreinhard](https://github.com/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`.