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 |
|
#87 in Encoding
373,443 downloads per month
Used in 191 crates
(58 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.6–1MB
~17K SLoC