1 个不稳定版本
0.1.0 | 2024 年 7 月 28 日 |
---|
#376 在 HTTP 服务器
136 每月下载量
34KB
765 行
http_lolo
一个简单、轻量级、单线程的 HTTP 服务器,具有非阻塞 I/O 以处理并发操作。
功能
- 单线程架构,具有非阻塞 I/O
- 使用 epoll 并发处理请求
- 简单直观的 API 用于处理路由
- 支持多个服务器实例
- 可自定义请求和响应处理
安装
将以下内容添加到您的 Cargo.toml
[dependencies]
http_lolo = "0.1.0"
快速入门
use http_lolo::{HttpServer, Request, ResponseWriter};
fn main() {
let server = HttpServer::new();
server.handle_route("/", Box::new(|_: &mut Request, w: &mut ResponseWriter| {
w.write_string("Hello, World!".to_string());
}));
server.listen_on("127.0.0.1:8080");
HttpServer::run_all();
}
使用方法
创建新的服务器实例
let server = HttpServer::new();
添加路由处理器
server.handle_route("/", Box::new(|_: &mut Request, w: &mut ResponseWriter| {
w.write_string("Hello, World!".to_string());
}));
启动服务器
server.listen_on("127.0.0.1:8080");
HttpServer::run_all();
处理请求
在您的路由处理器中,您可以访问请求数据并写入响应
|req: &mut Request, resp: &mut ResponseWriter| {
// Access request data
println!("Method: {}", req.method);
println!("Path: {}", req.path);
// Write response
resp.set_status(200);
resp.write_string("Response content".to_string());
}
高级使用
多个服务器实例
您可以在不同的端口上创建多个服务器实例
let server1 = HttpServer::new();
let server2 = HttpServer::new();
// Add route handlers to server1 and server2
server1.listen_on("127.0.0.1:8080");
server2.listen_on("127.0.0.1:8081");
HttpServer::run_all();
JSON 响应
use http_lolo::JsonValue;
resp.write_json(json::object!{
"key" => "value",
"number" => 42
});
贡献
欢迎贡献!请随时提交拉取请求。
依赖关系
~11–23MB
~368K SLoC