# RustHttpWebServerFramework **Repository Path**: jinzhoumu/rust-server ## Basic Information - **Project Name**: RustHttpWebServerFramework - **Description**: 轻量级rust的http服务框架 - **Primary Language**: Rust - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 1 - **Created**: 2024-03-04 - **Last Updated**: 2024-08-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: Rust, Server, Http, Web, Framework ## README # Rust Web Server - 轻量Http服务框架 ![Static Badge](https://img.shields.io/badge/GPL_3.0-red?label=license) ![Static Badge](https://img.shields.io/badge/Rust-blue?label=language&labelColor=green) ## 一、简介 > 本项目是一个用rust语言开发的轻量**Http服务**的框架,封装了rust的TcpStream,提供了简单易用的接收和处理Http请求的Api,使用本项目可以简单几行代码就可搭建一个Http服务器。 ## 二、环境搭建 > 本项目使用的是 Rust 1.75 ## 三、支持功能 > * 多线程并发(内置线程池) > * 可代理静态资源 > * 可自定义响应头 > * 支持路由 > * 使用了serde(结构体序列化) ## 四、简单使用 1. 发送json数据 ```rust #[derive(Serialize, Deserialize)] struct Stu { name: String, age: u8, id: u32 } fn main() { //创建服务器实例,new()里的参数是线程数量 let mut server = Server::new(4); //注册处理请求的函数,第一个参数是该函数处理的请求方法类型 //第二个参数是该处理函数的映射路径 //第三个参数存放Fn闭包的Box //定义处理http请求的函数,参数需要一个http上下文 //HttpContext里提供了请求和响应 server.register_handler(HttpMethod::Get, "/json", Box::new(|mut ctx| { //是否允许前端跨域 ctx.get_response().allowed_cross_origin(); //调用该函数可以发送Json数据, 参数为HttpContext,需要发送的实体和响应状态码 send_json(&mut ctx, &Stu { name: "abc".to_string(), age: 33, id: 28798438 }, HttpStatus::OK).unwrap(); })); //调用run方法运行,并提供监听地址 run(server, "127.0.0.1:8080"); //最后访问http://127.0.0.1:8080/json,你就能得到一个json字符串 } ``` 2.搭建一个简单的静态资源(html,jpg/jpeg/png, css, js)的代理服务器 ```rust fn main() { //获取服务器实例 let mut server = Server::new(4); //注册静态资源处理器 //第一个参数是静态资源所在目录 //第二个参数是映射路径 server.register_static_resource("your resource path", "/static"); //运行服务器 run(server, "127.0.0.1:8080"); //当你访问127.0.0.1:8080/static/example.html就能在浏览其上显示了 //哇哦!短短3行代码就能代理静态资源啦!是不是非常简单!!! } ``` ## 五、未来计划 * 增加请求拦截器,并可以自定义拦截请求 * 增加路由组,可实现分组路由 * 完善日志打印 * 提供更多配套工具 * 完善注释