2个版本

使用旧的Rust 2015

0.2.1 2018年2月12日
0.2.0 2018年2月12日

#1310HTTP服务器

MIT 许可证

52KB
1K SLoC

Ferrum Router

Ferrum框架的路线处理程序。

Ferrum Router 是 Ferrum 的高效、方便且灵活的路由中间件。它允许复杂的 glob 正则表达式模式和命名 URL 参数,还允许处理程序为任何 Handler,包括所有 Chains。

示例

extern crate ferrum;
extern crate ferrum_router;

use ferrum::*;
use ferrum_router::{Router, Id};

fn main() {
    let mut router = Router::new();                     // Alternative syntax:
                                                        // let router = router!(
    router.get("/", handler, None);                     //     index: get "/" => handler,
    router.get("/{query}", handler, Id::some("query")); //     query: get "/{query}" => handler "query");

    Ferrum::new(router).http("localhost:3000").unwrap();

    fn handler(request: &mut Request) -> FerrumResult<Response> {
        let params = request.extensions.get::<Router>().unwrap();
        let query = params.get("query").map(|value| value.as_str()).unwrap_or("/");
        Ok(Response::new().with_content(query, mime::TEXT_PLAIN))
    }
}

概览

路由器是 Ferrum 的 核心包 的一部分。

  • 根据它们的路径路由客户端请求
  • 解析参数并将其提供给其他中间件/处理程序

安装

如果您正在使用 cargo,只需将 ferrum-router 添加到您的 Cargo.toml

[dependencies]

ferrum-router = "*"

否则,cargo build,rlib 将位于您的 target 目录中。

示例

查看 示例 目录!

您可以使用 cargo run --example example-name 运行单个示例。注意,对于基准测试,您应该确保使用带有 --release 标志的 Rust 夜间工具链,这将导致 cargo 以优化方式编译整个工具链。如果没有 --release,您将得到非常令人沮丧的数字。

基准测试

要运行基准测试,请使用 Rust 夜间工具链

rustup default nightly
cargo bench --features "nightly"

许可证

MIT

依赖项

~14MB
~275K SLoC