#template #uri #url #rfc6570 #uritemplates

uritemplate

Rust实现RFC6570 - URI模板,可以处理URI模板,包括指定的第4级模板

3个版本

使用旧Rust 2015

0.1.2 2016年5月14日
0.1.1 2015年5月28日
0.1.0 2015年5月28日

模板引擎中排名第436

每月下载22

BSD-3-Clause

32KB
606

rust-uritemplate

Build Status Cargo version License

文档

rust-uritemplateRFC6570 - URI模板的Rust实现,可以处理URI模板,包括根据规范指定的第4级模板。它通过了uritemplate-test测试套件中的所有测试。

基本用法

变量设置可以链式进行,以编写清晰、简洁的代码。

let uri = UriTemplate::new("/view/{object:1}/{/object,names}{?query*}")
    .set("object", "lakes")
    .set("names", &["Erie", "Superior", "Ontario"])
    .set("query", &[("size", "15"), ("lang", "en")])
    .build();

assert_eq!(uri, "/view/l/lakes/Erie,Superior,Ontario?size=15&lang=en");

无法将变量设置为“undefined”的值。相反,如果您已经设置了变量,只需简单地删除该变量即可。

let mut t = UriTemplate::new("{hello}");
t.set("hello", "Hello World!");
assert_eq!(t.build(), "Hello%20World%21");

t.delete("hello");
assert_eq!(t.build(), "");

delete函数如果变量存在则返回true,否则返回false

支持类型

任何实现了IntoTemplateVar的类型都可以设置为UriTemplate变量值。默认情况下,为每种变量类型提供了以下实现

  • 标量值:String&str
  • 列表:Vec<String>&[String]&[str]
  • 关联数组:Vec<(String, String)>&[(String, String)]&[(&str, &str)]&HashMap<String, String>

此外,您可以为您的类型实现 IntoTemplateVar。查看 IntoTemplateVar 的文档,了解其工作原理。

依赖关系

~3.5MB
~75K SLoC