#web #server-response #request #dependency-less

web_server

Small and dependency-less crate for creating HTTP servers

17 unstable releases (3 breaking)

0.4.2 Jun 1, 2020
0.4.1 Jun 1, 2020
0.4.0 May 31, 2020
0.3.41 May 25, 2020
0.1.20 Sep 25, 2019

#422 in HTTP server

MIT license

225KB
625 lines

Http Server lib for Rust

Build Status

web_server is a small, dependency-less crate for creating HTTP servers.

When you coding the backend using Rust, the most annoying thing could be the size of a freamwork and the time needed to compile the application

The web_server package fixes these problems. web_server has no dependencies, but allows you to create full-fledged servers

First server using web_server

extern crate web_server;
web_server::new()
   .get("/", |request: web_server::Request, mut response: web_server::Response|
        "Hello World!".into())
   .launch(80)
   .unwrap();

It's easy!

First you must create instance of HttpServer

web_server::new()

then you can declare your endpoints. E.g.

.get("/your/path", |request, default_response| {
    // There place your logic
    // This function returns Response
    "response text".into()
})
.post("/your/path", |_, _| "Handler for POST method")
.route(web_server::HttpMethod::DELETE, "/your/path", |_, _| "Handler for DELETE method")
.any("/your/path", |_, _| "Handler for any method")

Now you must run server by launch method

.launch(PORT).unwrap()

Receiving post data

e.g.

    use web_server::decoders::x_www_form_urlencoded;

    web_server::new()
        .post("/add-user", |req, _| {
            println!("{}", req.get_body());
            let body: HashMap<String, String> = x_www_form_urlencoded(req.get_body().as_str());
            format!(
                "Add new user: {}",
                body.get("user").unwrap_or(&String::from("Error!"))
            )
            .into()
        })
        .launch(8080)
        .unwrap();

Read examples/ to know more!

No runtime deps