13个版本

0.1.12 2023年2月10日
0.1.11 2023年2月9日
0.1.1 2023年1月18日

328HTTP服务器

Download history 8/week @ 2024-06-30 191/week @ 2024-07-28

每月下载 199

MIT许可 MIT

49KB
1K SLoC

Airline

无依赖的多线程Web服务器。

此版本尚未准备好用于生产!

关于Airline

Airline旨在简化其他包增加的许多额外复杂性。Airline不需要大量包,在某些情况下也不需要运行时,它是一个无依赖的纯Rust。

概述 & 使用

struct RequestConnector;
impl RequestConnector { 
    fn new() -> RequestConnector {
        RequestConnector {}
    }
}

fn index(_req: &Request, res: &mut Response, _data: &RequestConnector) {
    res.send_str(Assets::INDEX);
}

pub fn main() {
    let root = Route::create("", RequestType::Get, index);
    let mut server = Server::new(3000, RequestConnector::new);
    server.register(root);
    server.start();
}

对于您想要注册的每个路由,创建一个接受对 Request 的借用、对 Response 的可变借用以及任何满足 'static + Send 条件的类型的借用的函数。该 Request 包含有关请求的信息,而 Response 是一个结构体,此函数应更新该结构体以实际返回数据给客户端。最后,最后一个参数是你提供的结构体类型。在创建服务器时,你传递一个创建此结构体实例的函数。每个线程创建一个结构体,每个线程都可以完全访问该结构体。这是一个包含所需组件(如数据库连接或任何API连接器)的好地方。

然后,创建一个路由结构体。它接受一个路径参数作为字符串(不需要尾部/首部斜杠),一个请求类型(HTTP动词),以及你创建的函数。

接下来,创建服务器。传递端口号,以及一个创建你想要传递给函数的任何结构体的函数。

注册所有路由,调用 start,然后你的服务器就可以正常运行了!

资产编译

如果您正在处理 HTML 文件,可以将这些文件构建到您的二进制文件中。使用以下命令安装此软件包并作为可执行文件运行:cargo install,然后在项目根目录下调用 airline compile path_to_html。所有HTML文件将被提取并复制到名为 Assets 的结构体中,这些结构体存储在 src/assets.rs 中。

请注意,您仍然可以直接从文件系统中读取HTML文件发送。这可以通过调用 response.send_html(path) 来实现。

依赖项