17 unstable releases (8 breaking)

Uses old Rust 2015

0.8.0 Nov 27, 2017
0.6.0 Jan 20, 2017
0.5.1 Nov 29, 2016
0.3.0 Jul 23, 2016
0.0.1 Jul 8, 2015

#647 in HTTP server

Download history 310/week @ 2024-06-17 290/week @ 2024-06-24 139/week @ 2024-07-01 125/week @ 2024-07-08 255/week @ 2024-07-15 271/week @ 2024-07-22 252/week @ 2024-07-29 218/week @ 2024-08-05 375/week @ 2024-08-12 278/week @ 2024-08-19 255/week @ 2024-08-26 324/week @ 2024-09-02 223/week @ 2024-09-09 241/week @ 2024-09-16 336/week @ 2024-09-23 234/week @ 2024-09-30

1,070 downloads per month
Used in 12 crates (11 directly)

MIT/Apache

42KB
791 lines

params Build Status

A plugin for the Iron web framework that parses parameters from incoming requests from the following sources:

  • JSON data (Content-Type: application/json)
  • URL-encoded GET parameters
  • URL-encoded Content-Type: application/x-www-form-urlencoded parameters
  • Multipart form data (Content-Type: multipart/form-data)

This plugin combines all request parameters from these sources into a single params::Map accessible through any Iron request using req.get_ref::<params::Params>(). Working example:

// Visit `http://127.0.0.1:3000/?user[name]=Marie` to be greeted with a welcome message. Any other
// request will return a 404 error.

extern crate iron;
extern crate params;

use iron::prelude::*;

fn handle_user(req: &mut Request) -> IronResult<Response> {
    use params::{Params, Value};

    let map = req.get_ref::<Params>().unwrap();

    match map.find(&["user", "name"]) {
        Some(&Value::String(ref name)) if name == "Marie" => {
            Ok(Response::with((iron::status::Ok, "Welcome back, Marie!")))
        },
        _ => Ok(Response::with(iron::status::NotFound)),
    }
}

fn main() {
    Iron::new(handle_user).http("127.0.0.1:3000").unwrap();
}

You can perform custom request parameter deserialization by implementing params::FromValue for any Sized type. See src/conversion.rs for inspiration!

This crate is fully documented, and we're working on hosting it at ironframework.io.

See examples/params.rs for an interactive example.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~6.5MB
~140K SLoC