9 stable releases
2.1.1 | May 27, 2024 |
---|---|
2.0.0 | Nov 20, 2023 |
1.1.3 | Aug 18, 2023 |
1.1.2 | Sep 11, 2022 |
1.0.1 |
|
#152 in Encoding
312,170 downloads per month
Used in 177 crates
(51 directly)
22KB
441 lines
Serde support for the HTTP crate
Adds ability to serialize and deserialize types from the HTTP crate.
If you want to serialize Request
or Response
, use into_parts()
and serialize their parts, and then rebuild them using their Builder
.
Usage
You must annotate fields with #[serde(with = "http_serde::<appropriate method>")]
.
# use http::{*, uri::*};
#[derive(serde::Serialize, serde::Deserialize)]
struct MyStruct {
#[serde(with = "http_serde::method")]
method: Method,
#[serde(with = "http_serde::status_code")]
status: StatusCode,
#[serde(with = "http_serde::uri")]
uri: Uri,
#[serde(with = "http_serde::header_map")]
headers: HeaderMap,
#[serde(with = "http_serde::authority")]
authority: Authority,
}
There's also support for the types wrapped in an Option
. To use it, change the with
attribute prefix from http_serde::
to http_serde::option::
.
# use http::{*, uri::*};
#[derive(serde::Serialize, serde::Deserialize)]
struct MyStruct {
#[serde(with = "http_serde::option::header_map")]
// ^^^^^^
optional_headers: Option<HeaderMap>,
}
Requirements
- Rust 1.56 or later.
Dependencies
~0.7–1MB
~17K SLoC