use std::env; use axum::{routing::get, Json, Router}; use serde::{Deserialize, Serialize}; use tracing::info; use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; use tower_http::{trace::TraceLayer}; #[tokio::main] async fn main() { dotenv::dotenv().ok(); tracing_subscriber::registry() .with(tracing_subscriber::EnvFilter::new( std::env::var("RUST_LOG").unwrap_or_else(|_| "".into()), )) .with(tracing_subscriber::fmt::layer()) .init(); let bind_address = env::var("BIND_ADDRESS").unwrap(); info!("Starting server on {}", bind_address); let app = Router::new() .route("/api/test", get(test)) .layer(TraceLayer::new_for_http()); axum::Server::bind(&bind_address.parse().unwrap()) .serve(app.into_make_service()) .await .unwrap(); } #[derive(Serialize, Deserialize)] struct MyMessage { message: String, } async fn test() -> Json { Json(MyMessage { message: "Hello!".to_string(), }) }