Skip to content

URL parameters serialization with comma separated sequences

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

meilisearch/yaup

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Yaup - Yet Another URL Params crate

Serialize your structures as query parameters. I made this crate because I didn't find anything that matched the structure of the query parameters used in Meilisearch.

Specificities of this query parameters format:

  • The crate writes the initial ? if there are parameters to send.
  • You can only serialize structures that follow a "key-value" shape, like structures, HashMap, BTreeMap, etc.
  • Sequences (arrays, vectors, tuples, etc) are comma-separated. { doggo: vec!["kefir", "echo"] } serialize as ?doggo=kefir,echo.
  • Empty and null values are not ignored. { doggo: Vec::new(), catto: None } serialize as ?doggo=&catto=null.
  • Return an error if you try to serialize a structure with multiple levels of key-value structures (i.e., an object containing a HashMap for example).

Example

#[derive(Debug, serde::Serialize)]
enum Filter { New, Registered, Blocked }

#[derive(Debug, serde::Serialize)]
struct Params {
    cursor: Option<usize>,
    per_page: Option<usize>,
    username: String,
    filter: Vec<Filter>,
}

let params = Params {
    cursor: Some(42),
    per_page: None,
    username: String::from("tamo"),
    filter: vec![Filter::New, Filter::Blocked],
};
assert_eq!(
    yaup::to_string(&params).unwrap(),
    "?cursor=42&per_page=null&username=tamo&filter=New,Blocked"
);

Thanks

This was originally a fork of serde_url_params which is still maintained. Thanks, boxdot, for the initial code.

Everything has been rewritten from scratch for the v0.3.0.

License

Contribution

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

About

URL parameters serialization with comma separated sequences

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 97.1%
  • Shell 2.9%