Routing
Larastvel's router is built on Axum and wrapped in a Registrar that provides a Laravel-like API.
Basic Routes
rust
router.get("/", home_page);
router.post("/login", login_handler);
router.put("/user/:id", update_user);
router.delete("/user/:id", delete_user);Route Groups
rust
router.group("/admin", |r| {
r.get("/dashboard", admin_dashboard);
r.get("/users", admin_users);
});Named Routes
rust
router.get("/user/:id", user_show).name("profile");
// Generate: router.route("profile", &[("id", "42")])Middleware
Global Middleware
Middleware can be registered by alias or directly:
rust
router.middleware("auth", auth_middleware);
router.middleware("throttle:60,1", rate_limiter_middleware);Per-Route / Per-Group
rust
router.get("/dashboard", dashboard_handler)
.middleware("auth")
.middleware("throttle:60,1");
router.group("/admin", |r| {
r.middleware("auth");
r.get("/", admin_index);
});Controllers
Use the #[controller] macro:
rust
#[controller]
impl UserController {
async fn index() -> Json<Vec<User>> {
// GET /users
}
async fn show(Path(id): Path<i32>) -> Json<User> {
// GET /users/:id
}
}
router.get("/users", UserController::index);
router.get("/users/:id", UserController::show);Resources
rust
#[derive(Resource)]
#[resource(controller = "UserController")]
struct UserResource;
router.resource("/users", UserResource::routes());Generates: index, create, store, show, edit, update, destroy.
WebSocket
rust
router.ws("/ws", ws_handler);See the broadcasting docs for a full WebSocket example with NativeBroadcaster.
Route Listing
bash
cargo run -p larastvel-cli -- route:listLists all registered routes with methods, URIs, and middleware.
