Crate uhttp_request [] [src]

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

Header

An HTTP request header field [RFC7230§3.2].

Headers

Iterator over all header fields in a request.

RequestLine

A "Request-Line" [RFC7230§3.1.1] that begins an HTTP request.

Enums

Error

Errors that may occur when processing request header.

Type Definitions

Result

Specialized result using custom Error.