2个不稳定版本
0.2.0 | 2020年8月26日 |
---|---|
0.1.0 | 2020年8月23日 |
#23 in #http-router
13KB
252 行
灌浆
基于hyper构建的简单哈希HTTP路由器。
use grout::{path, Body, Method, Request, Response, ResponseBuilder, RouterBuilder, Server};
async fn handler(params: Vec<String>, _req: Request) -> Response {
Ok(ResponseBuilder::default().body(Body::empty())?)
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let addr = ([127, 0, 0, 1], 3000).into();
let router = RouterBuilder::default()
.register(Method::GET, path![], handler)
.register(Method::GET, path![foo / _], handler)
.register(Method::POST, path![foo / _], handler)
.build();
let server = Server::bind(&addr).serve(router);
println!("Listening on http://{}", addr);
server.await?;
Ok(())
}
功能
- HTTP方法路由
- 路由参数(有序,无键)
- 简单的API
请参阅示例文件夹以获取示例用法。
限制
- 没有状态传递或任何形式的中间件
- 我建议使用
state
crate将外部结构体注入到您的路由处理器中
- 我建议使用
- 没有复杂的路由匹配
- 在路由处理器中执行复杂的验证
依赖关系
~9.5MB
~159K SLoC