# web_rs
A minimal Express.js-like web server for Rust. Provides routing, middleware, request/response objects, error handling, static file serving, and query/body parsing.
## Usage
1. Add this crate to your project (or clone this repo).
2. See `src/main.rs` for an example of how to use the API:
- Add routes and middleware
- Start the server
## Example
```rust
use web_rs::{Router, Middleware, serve_static_file, parse_query, parse_json};
use hyper::{Body, Request, Response, Method, StatusCode, Server};
use std::sync::Arc;
use tokio::sync::Mutex;
use hyper::service::{make_service_fn, service_fn};
#[tokio::main]
async fn main() {
let router = Arc::new(Router::new().await);
// Add routes and middleware as shown in main.rs
// ...
let make_svc = make_service_fn(move |_| {
let router = router.clone();
async move {
Ok::<_, std::convert::Infallible>(service_fn(move |req| {
let router = router.clone();
async move { router.handle(req).await }
}))
}
});
let addr = ([127, 0, 0, 1], 3000).into();
let server = Server::bind(&addr).serve(make_svc);
println!("Listening on http://{}", addr);
if let Err(e) = server.await {
eprintln!("server error: {}", e);
}
}
```
## Features
- Routing (GET, POST, etc.)
- Middleware support
- Request/response objects
- Error handling
- Static file serving
- Query/body parsing
## License
MIT