Expand description
This crate provides barebone, slice-based parsers for extracting request line components and header fields from HTTP requests.
In general, components are extracted along defined delimiters, but further processing and syntax validation is left to higher layers.
§Example
use uhttp_request::{RequestLine, Headers};
let req = b"GET /abc?k=v HTTP/1.1\r\nHost: example.com\r\nAccept: text/*\r\n\r\nbody";
let (reqline, rest) = RequestLine::new(req).unwrap();
assert_eq!(reqline.method, "GET");
assert_eq!(reqline.target, "/abc?k=v");
assert_eq!(reqline.version, "HTTP/1.1");
let mut headers = Headers::new(rest);
let h = headers.next().unwrap().unwrap();
assert_eq!(h.name, "Host");
assert_eq!(h.val, b" example.com");
let h = headers.next().unwrap().unwrap();
assert_eq!(h.name, "Accept");
assert_eq!(h.val, b" text/*");
assert!(headers.next().is_none());
let rest = headers.into_inner();
assert_eq!(rest, b"body");
Structs§
- An HTTP request header field [RFC7230§3.2].
- Iterator over all header fields in a request.
- A “Request-Line” [RFC7230§3.1.1] that begins an HTTP request.
Enums§
- Errors that may occur when processing request header.
Type Aliases§
- Specialized result using custom
Error
.