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日

#576HTTP服务器

Download history 371/week @ 2024-03-28 36/week @ 2024-04-04 89/week @ 2024-04-11 163/week @ 2024-04-18 7/week @ 2024-04-25 1/week @ 2024-05-16 2/week @ 2024-05-23

每月下载量 244

MIT许可协议

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许可协议

无运行时依赖