1 unstable release

0.1.0 Aug 3, 2025

#2380 in HTTP server

MIT license

11KB
123 lines

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

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

Dependencies

~7–13MB
~215K SLoC