3个不稳定版本
0.2.1 | 2019年12月18日 |
---|---|
0.2.0 | 2019年12月18日 |
0.1.0 | 2019年12月17日 |
#13 in #http-router
73KB
2K SLoC
wayfinder
一个小型HTTP路由生成器
- 这是什么?
- 入门指南
- 语言参考
- 更多信息
这是什么?
路由配置通常在应用程序初始化期间动态完成,即使在倾向于静态样式的系统中也是如此。但是,路由更改的线条比运行时慢得多,我们可以通过接受这一点来使事情变得更容易——我们免费获得我们路由的静态类型!
wayfinder
的哲学是在构建时编译路由,允许服务器使用与手动编写的路由性能相同的代码进行路由。这不是我们所有人想要的吗?
我们还提前声明了路由参数类型,因此会自动生成解析它们的代码,我们的应用程序代码可以专注于域级别。
use uuid::Uuid;
/
[lang: String]
users
GET -> People::Index
people
GET People::Index
POST People::Create
new
GET People::New
{id: Uuid}
GET People::Show
PUT People::Update
[name: String]
DELETE People::Destroy
edit
GET People::Edit
入门指南
查看examples.routes
和common.routes
中的基本示例配置。
查看examples/cli/
中的示例应用程序,它作为CLI运行路由算法。尝试以下操作
> cargo run /books/
语言参考
路由配置文件由两部分组成:一个可选的标题和主要分层路由配置部分。标题可以是传递给生成模块的任何Rust代码,主要用于use
以下引用的类型。
路由配置以包含单个字符 '/' 的行开始。路由形成一个层次结构,结构是递归定义的。它是空格敏感的,缩进级别对应于嵌套级别。可以在任何地方添加空行。
每个路由段可以有三个类型的子元素:查询参数、资源和嵌套路由。它们必须按该顺序指定。
查询参数是写在方括号内的名称-类型对,如下所示:[lang: String]
。它们适用于该路由上的每个资源以及每个嵌套路由。
资源是您的应用程序将响应的特定HTTP动词。它们由两部分组成,以及一个可选部分。动词本身首先列出,然后是资源的名称。如果路由应该重定向到该资源而不是直接服务它,可以在部分之间写一个箭头。所以一个简单的资源可能看起来像这样:GET people
,以及一个重定向 GET -> people
。资源还可以有查询参数,它们写在一个在资源下的块中。
嵌套路由最后出现。它由一个路径段组成,后面跟一个嵌套的查询参数、资源和路由块。路径段可以是静态字符串(例如 people
),或者是一个在花括号中写的路径参数,如 {id: Uuid}
。
更多信息
请参阅生成的文档以获取使用帮助,包括此模块以及生成的路由。
依赖项
~1.5MB
~27K SLoC