13个版本
0.1.12 | 2023年2月10日 |
---|---|
0.1.11 | 2023年2月9日 |
0.1.1 | 2023年1月18日 |
328 在 HTTP服务器 中
每月下载 199 次
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)
来实现。