4 个版本
0.1.4 | 2023 年 6 月 6 日 |
---|---|
0.1.3 | 2023 年 3 月 30 日 |
0.1.2 | 2023 年 2 月 23 日 |
0.1.1 | 2023 年 2 月 23 日 |
606 在 HTTP 服务器
27 每月下载量
10KB
134 行
Zvezda
Web 库,而非 Web 框架
为什么?
我对许多现有的 Rust Web 服务器实现的一大不满是它们都太 大了!你需要花 15 分钟和 100 行样板代码才能了解你正在做什么!这就是我开始编写 Zvezda 的原因。
运行包含的示例
- 克隆此仓库:
https://gitlab.com/inzig0/zvezda.git
- 进入项目文件夹:
cd
- 运行示例之一
- 基本 Web 服务器:
cargo run --example hello
- 基本的 ping-pong Web 服务器:
cargo run --example echo
- 简单的样板代码 Web 服务器:
cargo run --example html
- JSON 使用示例:
cargo run --example json
- 基本 Web 服务器:
将此库包含到您的项目中
将此行添加到您的 Cargo.toml
...
[dependencies]
zvezda = "0.1.1"
// OR if you want the git version,
zvezda = { git = "https://gitlab.com/inzig0/zvezda.git" }
...
lib.rs
:
Zvezda
Zvezda 是一个快速且轻量级的 Web 库,旨在为您的网站提供 HTML 功能。它 不像 Warp 或 Rocket,后者旨在提供框架以工作,而是向您的项目添加非侵入式 HTML 后端实现。
Hello World 示例
use std::net::TcpListener;
use std::io::Read;
use zvezda::Connection;
fn main() {
let listener = TcpListener::bind("127.0.0.1:8080").unwrap();
for stream in listener.incoming() {
let mut stream = stream.unwrap();
let mut buf = [0; 1536];
stream.read(&mut buf).unwrap();
let packet = String::from_utf8_lossy(&buf);
let mut handle = Connection::parse(packet.to_string(), stream);
let path = handle.path_as_str();
match path {
"/" => {
handle.write_html("200 OK", String::from("Hello World!")).unwrap();
},
_ => {
handle.write_res("404 NOT FOUND").unwrap();
}
}
}
}