2个不稳定版本

0.2.0 2020年8月26日
0.1.0 2020年8月23日

#23 in #http-router

MIT许可证

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