| Crates.io | noxp |
| lib.rs | noxp |
| version | 0.3.0 |
| created_at | 2024-05-30 14:31:54.063238+00 |
| updated_at | 2025-05-13 23:44:25.288529+00 |
| description | A simple web server framework |
| homepage | |
| repository | https://github.com/Pedrinjs/noxp |
| max_upload_size | |
| id | 1256924 |
| size | 25,706 |
NOXP uses only the standard library
use noxp::*;
use std::fmt;
use std::sync::Arc;
struct Person {
name: String,
age: i32,
}
impl fmt::Display for Person {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{{ \"name\": \"{}\", \"age\": {} }}", self.name, self.age)
}
}
fn main() -> std::io::Result<()> {
// create the server
let mut server = Server::new();
// pay attention for the tuple (Method, &str)
server.handle_func(("GET", "/"), Arc::new(index));
server.handle_func(("POST", "/"), Arc::new(post));
// you can also send html (only in the views folder)
server.handle_func(("GET", "/hello"), Arc::new(file));
// and send json (only structs which implement Display)
server.handle_func(("GET", "/person"), Arc::new(json));
// listening at localhost:8080
server.listen_and_serve("localhost:8080")
}
fn index(res: &mut ResponseWriter, _req: Request) {
res.set_status(StatusCode::OK)
.set_text("Hello, World!");
}
fn post(res: &mut ResponseWriter, req: Request) {
req.print_body();
res.set_status(StatusCode::OK)
.set_json(req.body());
}
fn file(res: &mut ResponseWriter, _req: Request) {
res.set_status(StatusCode::OK)
.set_html("hello.html");
}
fn json(res: &mut Response, _req: Request) {
let person = Person {
name: String::from("Menezes"),
age: 16,
};
res.set_status(StatusCode::OK)
.set_json(person);
}