Gates is a lightweight and efficient web framework in Rust designed for handling HTTP requests with built-in gatekeeping middleware.
- Supports GET, POST, PUT, DELETE, SSE endpoints
- Websocket
- Gatekeeping middleware for request handling
- Response handling with status codes, messages, and redirections
Add nous as a dependency in your Cargo.toml:
[dependencies]
nous = "0.1.0-beta"#[gates_dope("/billionairegreathari")]
fn b(b: &mut GatesDope) {
b.send("billionairegreathariprasath".into());
match b.read().unwrap() {
Message::Text(b) => {
println!("{}", b);
}
_ => {}
}
}// POST request handler
#[gates(post = "/billionaire", gatekeeper = billionairehari)]
fn basicb(b: &GatesRequest) -> GateKeeperResponse {
println!("{}", b.body);
GateResponse::response(GatesResponse::new().status(200).message(""))
}Middleware functions can intercept requests before they reach handlers.
fn billionairehari(billionaire: &GatesRequest) -> GateKeeperResponse {
let path = billionaire.path;
GateKeeper::next()
GateKeeper::redirect(307, "/billionaires")
GateKeeper::response(
GatesResponse::new()
.content_type("")
.status(404)
.message("billionairegreatharigreat"),
)
}// GET
#[gates(get = "/billionaire", gatekeeper = billionairehari)]
fn basicg(b: &GatesRequest) -> GateKeeperResponse {
println!("{}", b.body);
GateResponse::response(GatesResponse::new().status(200).message(""))
}
// DELETE
#[gates(delete = "/billionaire", gatekeeper = billionairehari)]
fn basicd(b: &GatesRequest) -> GateKeeperResponse {
println!("{}", b.body);
GateResponse::response(GatesResponse::new().status(200).message(""))
}
// PUT
#[gates(put = "/billionaire", gatekeeper = billionairehari)]
fn basicp(b: &GatesRequest) -> GateKeeperResponse {
println!("{}", b.body);
GateResponse::response(GatesResponse::new().status(200).message(""))
}#[gates(sse = "/billionaire", gatekeeper = billionairehari)]
fn basics(b: &GatesRequest) -> GateKeeperResponse {
println!("{}", b.body);
GateResponse::response(GatesResponse::new().status(200).message(""))
}Compile and run the project with:
cargo runThis project is licensed under the MIT License.