Skip to content
/ oxidy Public

Super Fast & High Performance minimalist web framework for rust

License

Notifications You must be signed in to change notification settings

oxidy-rs/oxidy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

oxidy

Fast & Minimum Web Framework for Rust.

Built on top of Tokio Tcp with Tokio Runtime.

This project is highly inspired by express.js, koa.js & warp.rs.

Features

  • Main Focus on Fast & Performance
  • Very minimum LOC (Lines of code)
  • No Unsafe Code
  • Tokio Tcp
  • Tokio Runtime
  • Robust Routing
  • Allow Middleware
  • Easy to build your own middleware
  • Allow Multi Threading
  • Allow Concurrency
  • Full Async/Await Support

Install

This is a crate (Rust Module) available on crate.io. Before install oxidy download & install Rust.

Quick Start

  • Add oxidy & tokio to your dependency in Cargo.toml file
[dependencies]
oxidy = "<version>"
tokio = { version = "<version>", features = ["full"] }
  • Paste this code below in your src/main.rs file
use oxidy::{Server, Context, Returns, route};

async fn route(mut c: Context) -> Returns {
    c.response.body = "Hello World".to_owned();
    (c, None)
}

#[tokio::main]
async fn main() {
    let mut app = Server::new();
    app.add(route!("get /", route));
    app.run("127.0.0.1:3000").await;
}
  • cargo run to run the server in development or cargo run --release to run the server in release profile.

Middleware

use std::time::Instant;
use oxidy::{Server, Context, Returns, route, middleware, tail};

async fn mid(mut c: Context) -> Returns {
    let start = Instant::now();
    println!("Middleware Function");
    c.response.body = "Middleware Function".to_owned();
    c.next = true;

    tail!{
        c,
        {
            println!("Tail Function");
            c.response.body = "Tail Function".to_owned();
            println!("Response Time: {:?}", Instant::now().duration_since(start));
            c
        }
    }
}

async fn route(mut c: Context) -> Returns {
    println!("Route Function");
    c.response.body = "Hello World".to_owned();
    (c, None)
}

#[tokio::main]
async fn main() {
    let mut app = Server::new();
    app.add(middleware!(mid));
    app.add(route!("get /", route));
    app.run("127.0.0.1:3000").await;
}

Note

  • There is no difference between route & middleware in oxidy. All are same & identical.
  • Try to use oxidy profile.release configuration to get highly optimize build. Cargo.toml
  • This project is still in Alpha.

License

This project is licensed under the MIT | View License

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for this project by you, shall be licensed as MIT, without any additional terms or conditions.

About

Super Fast & High Performance minimalist web framework for rust

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages