2 releases
0.0.2 | Oct 13, 2024 |
---|---|
0.0.1 | Oct 13, 2024 |
#340 in HTTP server
302 downloads per month
Used in 3 crates
(2 directly)
68KB
803 lines
HTTP Handle (http-handle)
A Rust-based HTTP server for serving static websites.
• Website • Documentation • Report Bug • Request Feature • Contributing Guidelines
Overview
The http-handle
is a robust Rust library designed for serving static websites. It provides a simple yet efficient HTTP server implementation with features like request parsing, response generation, and basic security measures. The library is not intended to be a full-fledged web server but rather a lightweight solution for serving static files over HTTP for development and testing purposes.
Features
- Static File Serving: Serve static files from a configured document root.
- Request Parsing: Parse incoming HTTP requests with proper error handling.
- Response Generation: Generate appropriate HTTP responses based on requests.
- Security Measures: Prevent directory traversal attacks.
- Content Type Detection: Automatically detect and set appropriate content types for files.
- Customizable 404 Handling: Support for custom 404 error pages.
- Threaded Connections: Handle multiple connections concurrently using threads.
- Configurable Server: Easy configuration of server address and document root.
Installation
Add this to your Cargo.toml
:
[dependencies]
http-handle = "0.0.2"
Usage
Here's a basic example of how to use http-handle
:
use http_handle::Server;
use std::thread;
use std::time::Duration;
fn main() -> std::io::Result<()> {
// Create a new server with an address and document root
let server = Server::new("127.0.0.1:8080", "./public");
// Run the server in a separate thread so it doesn't block
let server_handle = thread::spawn(move || {
server.start().expect("Server failed to start");
});
// Let the server run for 2 seconds before shutting it down
thread::sleep(Duration::from_secs(2));
println!("Server has been running for 2 seconds, shutting down...");
// In a real-world scenario, you would need to implement a proper shutdown signal
// This just exits the program after the duration.
Ok(())
}
This will start a server listening on 127.0.0.1:8080
, serving files from the ./public
directory.
Documentation
For full API documentation, please visit docs.rs/http-handle.
Examples
To explore more examples, clone the repository and run the following command:
cargo run --example example_name
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under either of
at your option.
Acknowledgements
Special thanks to all contributors who have helped build the http-handle
library.
Dependencies
~0.9–1.9MB
~40K SLoC