#http-request #header #request #http #request-line

nightly uhttp_request

HTTP请求起始行和头部字段解析器

2个版本

使用旧的Rust 2015

0.5.1 2017年1月22日
0.5.0 2017年1月22日

#5 in #headers


uhttp_json_api中使用

MIT许可证

15KB
223 行代码(不包括注释)

uhttp_request -- HTTP请求起始行和头部字段解析器

文档

此软件包提供了基于切片的裸骨解析器,用于从HTTP请求中提取请求行组件和头部字段

通常,组件是沿着定义的定界符提取的,但进一步的处理和语法验证留给高层。

示例

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

用法

软件包可以通过将Cargo中的依赖项添加到Cargo.toml来使用

[dependencies]
uhttp_request = "0.5.1"

并在软件包根目录中导入

extern crate uhttp_request;

依赖项

~620KB