#uri #http #slice #url

uhttp_uri

HTTP URI的零分配解析器

2个版本

使用旧的Rust 2015

0.5.1 2017年1月25日
0.5.0 2017年1月25日

#81#uri

Download history • Rust 包仓库 1/week @ 2023-11-27 • Rust 包仓库 4/week @ 2024-02-12 • Rust 包仓库 9/week @ 2024-02-19 • Rust 包仓库 37/week @ 2024-02-26 • Rust 包仓库 18/week @ 2024-03-04 • Rust 包仓库 14/week @ 2024-03-11 • Rust 包仓库

79 每月下载
用于 4 crates

MIT 协议

13KB
262

uhttp_uri -- HTTP URI解析器

文档

此crate提供了一个简单的、零分配的HTTP URI解析器,如请求头中出现的HTTP URI。

通常,组件会在定义的分隔符处提取,但进一步的验证和处理(如百分号解码、查询解码和punycode解码)留给高层。为了追求简单,此crate也不支持泛型和非HTTP URI,如file:ftp:// – 仅实现了http://https://方案的简化语法。

示例

use uhttp_uri::{HttpUri, HttpResource, HttpScheme};

let uri = HttpUri::new("https://example.com:443/r/rarepuppers?k=v&v=k#top").unwrap();
assert_eq!(uri.scheme, HttpScheme::Https);
assert_eq!(uri.authority, "example.com:443");
assert_eq!(uri.resource.path, "/r/rarepuppers");
assert_eq!(uri.resource.query, Some("k=v&v=k"));
assert_eq!(uri.resource.fragment, Some("top"));

let res = HttpResource::new("/shittydogs?lang=en");
assert_eq!(res.path, "/shittydogs");
assert_eq!(res.query, Some("lang=en"));
assert_eq!(res.fragment, None);

用法

crate可以通过在Cargo.toml中添加它作为依赖项通过cargo使用

[dependencies]
uhttp_uri = "0.5.1"

并在crate根目录中导入它

extern crate uhttp_uri;

无运行时依赖