Skip to content

duncanlutz/ruxt-macros

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Ruxt Macros

This is a collection of macros for the Ruxt web framework.

Installation

Run the following command to add Ruxt to your project:

cargo add ruxt

Add the following to your Cargo.toml:

[dependencies]
ruxt-macros = "0.1.4"

Usage

#[ruxt_macros::main]
async fn main() -> std::io::Result<()> {
   let test_data = "Hello, World!";
   HttpServer::new(move || App::new().app_data(test_data.to_string()))
   .bind(("0.0.0.0", 8080))?
   .run()
   .await
}

Basic Routing

The Ruxt main macro will automatically generate routes for files in the routes directory. The routes are generated based on the file name, so a file named index.rs will be available at the root of the server.

The macro determines which HTTP verb to use based on the function name. For example, a function named get will be a GET route.

So for example:

// routes/index.rs
use actix_web::{web, HttpResponse, Responder};

pub async fn get() -> impl Responder {
    HttpResponse::Ok().body("Hello, World!")
}

Will be available as a GET request at http://localhost:8080/.

The following verbs are available for routing:

  • get
  • post
  • put
  • patch
  • delete

Dynamic Paths

Dynamic routes can be created by naming a folder or file with two leading underscores. For example, a folder named __user will create a dynamic route at /user/{id}.

// routes/__user.rs
use actix_web::{web, HttpResponse, Responder};

pub async fn post(id: web::Path<String>) -> impl Responder {
    HttpResponse::Ok().body(format!("Hello, {}!", id))
}

Will be available as a POST request at http://localhost:8080/user/{id}.

Current Limitations

  • As of now it is not possible to have a route with the name mod or index because of the way the macro generates routes. I'm looking into a solution for this.

License

This project is licensed under the MIT license.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages