#http-request #request-response #request-handler #basic #routes #requests

yanked eqeqo_server_base

Library for creating HTTP server basic functionality

new 0.1.4 Nov 4, 2024
0.1.3 Apr 19, 2024
0.1.2 Apr 17, 2024
0.1.1 Mar 30, 2024
0.1.0 Mar 28, 2024

#1082 in HTTP server

Download history 12/week @ 2024-07-29 3/week @ 2024-09-23

241 downloads per month

MIT license

17KB
479 lines

eqeqo - HTTPageboy

Welcome to our HTTP server project! This is a simple server built in Rust that handles HTTP requests and responses.

A basic package for handling HTTP request and response transmission on the server side, without additional processing.

  • Requests can be any HTTP request.
  • Routes are formed by the path, the HTTP request type, and the function to handle the request. The function must return a Response instance.
  • Responses type are identified by the content type and are returned as bytes to browsers.

Example

Creating a simple server:

	use server_base::{ ServerBase, Rt, Request, Response, StatusCode };

	// Demo route handler (valid empty answer)
	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 (also empty)
	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 an arbitrary ip and port.
		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();
	}

Dependencies

There are no external dependencies. :)

License

Copyright (c) 2024 fahedsl This project is licensed under the MIT License. For more details, refer to the MIT License.

No runtime deps