2 个版本
使用旧的 Rust 2015
0.1.1 | 2018年7月3日 |
---|---|
0.1.0 | 2018年7月2日 |
在 HTTP 服务器 中排名第 1258
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