use axum::{Json, Router, http::StatusCode, response::IntoResponse, routing::post};
use axum_params::Params;
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize)]
struct TestParams {
id: i32, name: String, #[serde(default)]
extra: Option<String>, }
#[axum::debug_handler]
async fn test_params_handler(Params(test, _): Params<TestParams>) -> impl IntoResponse {
println!("ID: {}, Name: {}", test.id, test.name);
(StatusCode::OK, Json(test))
}
#[tokio::main]
async fn main() {
let app = Router::new().route("/users/:id", post(test_params_handler));
let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
println!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
}