query_params 0.1.0

Rust macro to automatically implement the serialization to http query parameters for arbitrary structs.
Documentation

Build Status Rust version

QueryParams Derive

Rust custom derive to automatically implement serialization to http query params for arbitrary structs. A simple #[derive(QueryParams)] will generate a function to_query_params for your struct.

How it Works

#[macro_use]
extern crate query_params;

#[derive(QueryParams)]
struct PullRequestsParametersApi {
    page: i32,
    sort: bool,
    direction: String,
    state: Vec<String>,
    // .. other interesting fields ..
} 

fn main() {
    let pr = PullRequestsParametersApi {
        page: 2,
        sort: true,
        direction: "asc",
        state: vec!["open".to_string(), "closed".to_string()],
    }

    println!("{}", pr.to_query_params()); // => ?page=2&sort=true&direction=asc&state=open,closed
}

Get Started

It's as simple as two steps:

  1. Add query_params to your Cargo.toml
  • manually

  • or with cargo-edit:

    cargo add derive_builder

  1. Annotate your struct with #[derive(QueryParams)]

Disclaimer :exclamation:

  • Tuple structs and unit structs are not supported as they have no field names.

Documentation

Detailed explaination of all features and tips for troubleshooting.

Contribution

Feel free to make a pull request :smiley: