4个版本
0.1.3 | 2024年4月19日 |
---|---|
0.1.2 | 2024年4月17日 |
0.1.1 | 2024年3月30日 |
0.1.0 | 2024年3月28日 |
#576 在 HTTP服务器
每月下载量 244
16KB
449 行
eqeqo - server_base
概述
仍在开发中。如果您感兴趣,欢迎报告问题或分支仓库。
另一个HTTP服务器实现。不是试图重新发明轮子,我只是不知道如何使用其他现有的库,尽管我尝试过,或者它们会给我代码添加太多不必要的依赖。
eqeqo服务器基础库旨在提供基本的HTTP服务器实现,以便轻松创建最小api服务器,避免外部依赖。它可以用于处理HTTP请求和静态文件。服务器将根据设置的route
处理请求,即使route
未定义,也会处理静态文件。
Request
可以是任何HTTP请求。Route
由路径、HTTP请求类型和处理请求的函数组成。该函数必须返回一个Response
实例。Response
类型通过内容类型标识,并以字节形式返回给浏览器。
示例
创建简单服务器
use server_base::{ ServerBase, Rt, Request, Response, StatusCode };
// Demo route handler
fn demo_handle_test_get (_request: &Request) -> Response {
return Response {
status: StatusCode::Ok.to_string(),
content_type: String::new(),
content: "test-get".as_bytes().to_vec(),
}
}
// Another demo route handler
fn demo_handle_test_post (_request: &Request) -> Response {
return Response {
status: StatusCode::Ok.to_string(),
content_type: String::new(),
content: "test-post".as_bytes().to_vec(),
}
}
fn main() {
// Location to run, in this example is defined to local.
let serving_url: &str = "127.0.0.1:7878";
// Define number of requests the server will be able to run at the same time.
let threads_number: u8 = 10;
// Create a new server
let server = ServerBase::new(serving_url, threads_number, None).unwrap();
// Define routes and http method allowed, and link them to request handlers defined previously.
server.add_route("/test_route", Rt::GET, demo_handle_test_get);
server.add_route("/test_route", Rt::POST, demo_handle_test_post);
// Start serving
server.run();
// ...
// Stop and kill the server
server.stop();
}
许可协议
版权所有 (c) 2024 fahedsl
MIT许可协议