2 个版本

使用旧的 Rust 2015

0.1.1 2018年7月3日
0.1.0 2018年7月2日

HTTP 服务器 中排名第 1258

MIT 许可

11KB
227 行(不包括注释)

按照 Rust 的模式匹配风格实现的 URL 路由。

    route_match!(request.verb, request.url,
        GET ("/user") => user_list(),
        GET ("/user/", id = num::<u32>) => user_details(id),
        POST ("/user") => create_user(),
        PUT ("/user/", id = num::<u32>) => update_user(id),
        _ => error(404, "Not Found")
    );

优点

性能

待定:测量并讨论。应该不错,对吧? :)

  • 我们只扫描 URL 一次进行解析和匹配
  • 所有内容都可以在栈上分配

依赖注入

无需依赖注入框架,因为您可以直接将正确的依赖项注入到您的端点块中

    route_match!(request.verb, request.url,
        GET ("/authenticated/", remainder:rest) => {
            match user_store(database()) {
                Some(user) => route_match!(remainder,
                    "/user_details" => user_details(user)
                ),
                None => unauthorized_reponse()
            }
        }
    );

同样适用于任何其他类型的中间件:日志记录、计时等。这些都可以轻松实现并与 URL 映射组合

缺点

反向路由不可行

我想不出一种在保持其他优点的同时实现这种方法的方法,而且我认为这种权衡不值得

依赖项

~240KB