#regex #router #web

已撤销 regex_router

使用单个分组正则表达式(支持路径参数提取)实现请求路由。

1.0.2 2021年11月25日
0.1.0 2021年11月23日

#240 in #router

MIT 许可证

13KB
174

rs-regex-router

GitHub license Crates.io docs.rs

使用单个分组正则表达式(支持路径参数提取)实现请求路由。

功能

  • 基于这篇文章的设计方法。
  • 在通用处理器类型上实现,允许与各种Web服务器crate一起使用。
  • 提取路径参数,并将其映射为键值对。
  • 用于轻松声明路由的便利宏。

安装与基本用法

[dependencies]
regex_router = "1.0.2"

使用单元处理器类型的示例

use regex_router::{RouterBuilder, route};
...

let mut builder = RouterBuilder::<()>::new();

route!(builder; r"/example";; "GET" => ());
route!(builder; r"/test";; "GET" => ());

let router = builder.build().unwrap();

声明路径参数的示例

let mut builder = RouterBuilder::<()>::new();

route!(builder; r"/example/(\d+)"; "var1"; "GET" => ());
route!(builder; r"/test/(\d+)/(\d+)"; "var1", "var2"; "GET" => ());

let router = builder.build().unwrap();

对路由进行分发

match router.dispatch("GET", "/example/500") {
  Some(route_match) => {
    // Call handler and return response.
  }
  None => {
    // No route match. Return 404.
  }
};

可以在这里找到对hyper的示例实现。

问题与支持

无论您是想报告在使用此crate时遇到的问题,还是寻求一般性的帮助/支持,请使用问题跟踪器,并提供尽可能多的详细信息(例如重现步骤)。

我会尽力在合理的时间内回复问题。

依赖关系

~2.2–3MB
~53K SLoC