Crate httpcodec [−] [src]
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
| BodyDecoder |
Basic HTTP body decoder. |
| BodyEncoder |
Basic HTTP body encoder. |
| DecodeOptions |
Options for request/response decoders. |
| HeadBodyEncoder |
A body encoder mainly intended to be used for encoding HEAD responses. |
| Header |
HTTP header. |
| HeaderField |
HTTP header field. |
| HeaderFields |
An iterator over the fields in a HTTP header. |
| HeaderMut |
Mutable HTTP header. |
| Method |
HTTP method. |
| NoBodyDecoder |
A body decoder that consumes no bytes. |
| NoBodyEncoder |
A body encoder that produces no bytes. |
| ReasonPhrase |
Reason phrase of a response status. |
| Request |
HTTP request message. |
| RequestDecoder |
HTTP request decoder. |
| RequestEncoder |
HTTP request encoder. |
| RequestTarget |
Request target. |
| Response |
HTTP response message. |
| ResponseDecoder |
HTTP response decoder. |
| ResponseEncoder |
HTTP response encoder. |
| StatusCode |
Status code. |
Enums
| HttpVersion |
HTTP version. |
Traits
| BodyDecode |
|
| BodyEncode |
|