3个不稳定版本

0.2.1 2019年12月18日
0.2.0 2019年12月18日
0.1.0 2019年12月17日

#13 in #http-router

MIT许可证

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.routescommon.routes中的基本示例配置。

查看examples/cli/中的示例应用程序,它作为CLI运行路由算法。尝试以下操作

> cargo run /books/

语言参考

路由配置文件由两部分组成:一个可选的标题和主要分层路由配置部分。标题可以是传递给生成模块的任何Rust代码,主要用于use以下引用的类型。

路由配置以包含单个字符 '/' 的行开始。路由形成一个层次结构,结构是递归定义的。它是空格敏感的,缩进级别对应于嵌套级别。可以在任何地方添加空行。

每个路由段可以有三个类型的子元素:查询参数、资源和嵌套路由。它们必须按该顺序指定。

查询参数是写在方括号内的名称-类型对,如下所示:[lang: String]。它们适用于该路由上的每个资源以及每个嵌套路由。

资源是您的应用程序将响应的特定HTTP动词。它们由两部分组成,以及一个可选部分。动词本身首先列出,然后是资源的名称。如果路由应该重定向到该资源而不是直接服务它,可以在部分之间写一个箭头。所以一个简单的资源可能看起来像这样:GET people,以及一个重定向 GET -> people。资源还可以有查询参数,它们写在一个在资源下的块中。

嵌套路由最后出现。它由一个路径段组成,后面跟一个嵌套的查询参数、资源和路由块。路径段可以是静态字符串(例如 people),或者是一个在花括号中写的路径参数,如 {id: Uuid}

更多信息

请参阅生成的文档以获取使用帮助,包括此模块以及生成的路由。

依赖项

~1.5MB
~27K SLoC