Expand description
Encoders and decoders for HTTP/1.x messages based on bytecodec crate.
§Examples
Encodes a HTTP request message:
use bytecodec::Encode;
use bytecodec::bytes::BytesEncoder;
use bytecodec::io::IoEncodeExt;
use httpcodec::{BodyEncoder, HttpVersion, Method, Request, RequestEncoder, RequestTarget};
let request = Request::new(
Method::new("GET").unwrap(),
RequestTarget::new("/foo").unwrap(),
HttpVersion::V1_1,
b"barbaz",
);
let mut encoder = RequestEncoder::new(BodyEncoder::new(BytesEncoder::new()));
encoder.start_encoding(request).unwrap();
let mut buf = Vec::new();
encoder.encode_all(&mut buf).unwrap();
assert_eq!(buf, "GET /foo HTTP/1.1\r\nContent-Length: 6\r\n\r\nbarbaz".as_bytes());
Decodes a HTTP response message:
use bytecodec::bytes::RemainingBytesDecoder;
use bytecodec::io::IoDecodeExt;
use httpcodec::{BodyDecoder, HttpVersion, ResponseDecoder};
let mut decoder =
ResponseDecoder::<BodyDecoder<RemainingBytesDecoder>>::default();
let input = b"HTTP/1.0 200 OK\r\nContent-Length: 6\r\n\r\nbarbaz";
let response = decoder.decode_exact(input.as_ref()).unwrap();
assert_eq!(response.http_version(), HttpVersion::V1_0);
assert_eq!(response.status_code().as_u16(), 200);
assert_eq!(response.reason_phrase().as_str(), "OK");
assert_eq!(
response.header()
.fields()
.map(|f| (f.name().to_owned(), f.value().to_owned()))
.collect::<Vec<_>>(),
vec![("Content-Length".to_owned(), "6".to_owned())]
);
assert_eq!(response.body(), b"barbaz");
§References
- RFC 7230 Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing
Structs§
- Body
Decoder - Basic HTTP body decoder.
- Body
Encoder - Basic HTTP body encoder.
- Decode
Options - Options for request/response decoders.
- Head
Body Encoder - A body encoder mainly intended to be used for encoding HEAD responses.
- Header
- HTTP header.
- Header
Field - HTTP header field.
- Header
Fields - An iterator over the fields in a HTTP header.
- Header
Mut - Mutable HTTP header.
- Method
- HTTP method.
- NoBody
Decoder - A body decoder that consumes no bytes.
- NoBody
Encoder - A body encoder that produces no bytes.
- Reason
Phrase - Reason phrase of a response status.
- Request
- HTTP request message.
- Request
Decoder - HTTP request decoder.
- Request
Encoder - HTTP request encoder.
- Request
Target - Request target.
- Response
- HTTP response message.
- Response
Decoder - HTTP response decoder.
- Response
Encoder - HTTP response encoder.
- Status
Code - Status code.
Enums§
- Http
Version - HTTP version.
Traits§
- Body
Decode BodyDecode
is used for representing HTTP body decoders.- Body
Encode BodyEncode
is used for representing HTTP body encoders.