2 个版本

0.1.1 2022 年 9 月 3 日
0.1.0 2022 年 7 月 13 日

#517 in HTTP 服务器

GPL-3.0 许可证

35KB
776

示例

use std::collections::HashMap;
use weber::{
    HttpServer,
    parser::{
        Content,
        ContentType
    }
};

fn main() {
    // Building a server that runs in 4 threads
    let mut server = HttpServer::new(4);

    // Creating map with default values
    let mut default = HashMap::new();

    default.insert("foo".to_string(), "gg".to_string());
    default.insert("bar".to_string(), "hi".to_string());

    server.add_page("/", move | request | {
        let vals = request.path.values.as_ref().unwrap_or(&default);

        // Getting values from url
        let foo = match vals.get("foo") {
            None => "Variable not defined",
            Some(foo) => foo
        };

        let bar = match vals.get("bar") {
            None => "Variable not defined",
            Some(bar) => bar
        };

        let html = format!(
            "<!DOCTYPE html>
            <html>
                <head>
                    <h1>Hello world!</h1>
                </head>
                <body>
                    <h3>Foo: {}</h3>
                    <h3>Bar: {}</h3>

                    <a href=\"/:foo=bar,bar=foo\">Some page</a>
                </body>
            </html>
        ", foo, bar); // Format html using received values

        Content::new(html.as_bytes().to_vec(), ContentType::Html, 200)
    });

    server.run("127.0.0.1:7080"); // Run server on localhost:7080
}

功能

此软件包包含以下内容

  • 请求 / 响应 构建器和解析器

还有 PathParser,但没有为其提供构建器

  • 多线程 HTTP 服务器
  • 以及更多功能

PS

希望我能引起你的兴趣 :)

依赖项

~1.5MB
~23K SLoC