Crate axum_typed_routing
source ·Expand description
A library for creating statically-typed handlers in axum using macros, similar to Rocket.
See the docs for the route macro and the TypedRouter trait for more information. Currently, this library only supports axum 0.6, but can easily be updated to 0.7.
Example
use axum::extract::{State, Json};
use axum_typed_routing::{TypedRouter, route};
#[route(GET "/item/:id?amount&offset")]
async fn item_handler(
id: u32,
amount: Option<u32>,
offset: Option<u32>,
State(state): State<String>,
Json(json): Json<u32>,
) -> String {
todo!("handle request")
}
fn main() {
let router: axum::Router = axum::Router::new()
.typed_route(item_handler)
.with_state("state".to_string());
}Aide support
This library also supports aide! To use it, enable the aide feature.
This adds the macro api_route and the trait TypedApiRouter.
Traits
- Same as
TypedRouter, but with support foraide. - A trait that allows typed routes, created with the
routemacro to be added to an axum router.
Attribute Macros
- A macro that generates statically-typed routes for axum handlers.