4 releases
0.1.4 | Jun 6, 2023 |
---|---|
0.1.3 | Mar 30, 2023 |
0.1.2 | Feb 23, 2023 |
0.1.1 | Feb 23, 2023 |
#606 in HTTP server
27 downloads per month
10KB
134 lines
Zvezda
A web library, not a web framework
Why?
One of my big gripes with a lot of these existing web server implementations for rust is that they are all big! You need to look through documentation for 15 minutes and 100 lines of boilerplate to even know what your doing! Thats why I began work on Zvezda.
Running included samples
- Clone this repository:
https://gitlab.com/inzig0/zvezda.git
cd
into the project folder- Run one of the examples:
- Barebones web server:
cargo run --example hello
- Basic ping-pong web server:
cargo run --example echo
- Simple boilerplate web server:
cargo run --example html
- JSON usage example:
cargo run --example json
- Barebones web server:
Including this library in your project
Add this line to your 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 is a fast and lightweight web library, designed to provide HTML capability to your website. It is not like Warp or Rocket, which are designed to provide a framework to work off of, but instead to add a non-intrusive HTML backend implementation to your project.
Hello World Example
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();
}
}
}
}