5 releases

0.8.1 Sep 9, 2023
0.8.0 Aug 19, 2023
0.7.6 Aug 5, 2023
0.7.5 Jul 30, 2023
0.7.0 Jul 28, 2023

#748 in HTTP server

MIT license

33KB
731 lines

Maria.rs, a simple Rust framework like ExpressJs

Why?

  • Maria is developed for web developers who switched to Rust from Nodejs, you can easily adapt Maria.rs code.

what it includes?

  • Router
  • Json handle
  • Handler
  • Async
  • Traits
  • Multithreading

Examples

  • Hello world example
use maria::{ Request, Response, Router, handler, HandlerFn, Arc, Mutex};

#[tokio::main]
async fn main(){

    //defining first handler
    let home: HandlerFn = handler!(_req, res, {
        res.send_html("<h1>Hello from Maria!</h1>");
    });

    // init the router
    let mut router = Router::new();

    // add our handler to router
    router.get("/", vec![home]);

    // that's it!
    router.listen(8080).await;
}

Release notes

0.8.1

Router.r#use added.

  • I can't name as Router.use because Rust already has a keyword as use.
  • But you can use with Router.r#use();
  • Same as expressjs Router.use method.
  • You can define something for all methods and all paths
  • Example:
  •   router.r#use(vec![handler!(_req,_res,{
          println!("Something has came!");
      })]);
    
  • Also, readme updated with new handler! usage

0.8.0

New handler! macro for defining handlers, a quick header changes

  • now you can define a handler with using handler! macro example:

  •   let home: HandlerFn = handler!(_req, res, {
          res.send_text("Hello world!");
      })
    
  • 2 Examples added

  • Basic function documentation added

  • and that's done. also, documentation will come to next versions.

0.7.6

Path params wildcart added.

  • path params /:*param_key added.
  • wildcart can take any of params
  • for example: file/:*path -> file/folderpath/anotherfolder/file.txt
  • params: *path: folderpath/anotherfolder/file.txt

0.7.5

A quick bugfix?

  • The problem is that it drains the routes when it goes into the handling function.
  • But the drain is getting all inside the vec into another vec.
  • So this problem causes 404 after getting a response in route.
  • Also deleted a small debug log.

0.7.4

Ready to release!

  • New closure type handlers.
  • Some quick deadlock fixes.
  • Fully multithreded.
  • Cargo.toml ready to be publish!
  • Some warning fixes.

Dependencies

~3–9.5MB
~91K SLoC