uhttp_request 0.5.1

HTTP request start-line and header field parsers
Documentation
  • Coverage
  • 100%
    16 out of 16 items documented1 out of 8 items with examples
  • Size
  • Source code size: 15.89 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 4.03 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 12s Average build duration of successful builds.
  • all releases: 12s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • kchmck/uhttp_request.rs
    0 1 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • kchmck

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");