#uri #parser #query #string #incomplete

auris

简单的(不完整)URI 解析器

4 个版本

0.1.3 2020 年 5 月 3 日
0.1.2 2020 年 4 月 26 日
0.1.1 2020 年 4 月 14 日
0.1.0 2020 年 4 月 11 日

#incomplete 中排名 22

MIT 许可协议

16KB
313 代码行,不包括注释

Auris, Rust 的 URI 解析库

crates.io

  • 仅使用 Rust 中的安全功能
  • 努力实现 rfc2396 & rfc3986 兼容性

解析结构

    foo://example.com:8042/over/there?name=ferret#nose
    \_/   \______________/\_________/ \_________/ \__/
     |           |            |            |        |
  scheme     authority       path        query   fragment

使用方法

use auris::URI;

"postgres://user:password@host".parse::<URI<String>>();

"https://crates.io/crates/auris".parse::<URI<String>>();

查询字符串

我们还将查询字符串解析为 HashMap

"postgres://user:[email protected]/db?replication=true".parse::<URI<String>>();

如果存在重复的查询字符串标签,则最后一个标签生效

"scheme://host/path?a=1&a=2".parse::<URI<String>>();

文档

待办事项

  • 端口
  • 拆分为多个文件
  • 包含点的域名
  • 使用 fmt::Display 渲染 URI 和 Authority
  • Net loc 兼容性
  • 解析 IPv4、IPv6
  • 解析片段
  • 百分编码和解码
  • QuickCheck?

依赖关系

~1MB
~18K SLoC