This is a collection of macros for the Ruxt web framework.
Run the following command to add Ruxt to your project:
cargo add ruxtAdd the following to your Cargo.toml:
[dependencies]
ruxt-macros = "0.1.4"#[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
}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:
getpostputpatchdelete
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}.
- As of now it is not possible to have a route with the name
modorindexbecause of the way the macro generates routes. I'm looking into a solution for this.
This project is licensed under the MIT license.