// Created on savesnippets.com ยท https://savesnippets.com/4LQdBGHdex9Gns // Cargo.toml: // axum = "0.7" // tokio = { version = "1", features = ["full"] } use axum::{routing::get, Router, Json}; use serde::Serialize; use std::net::SocketAddr; #[derive(Serialize)] struct Greeting { message: String } async fn root() -> &'static str { "Hello, world!" } async fn greet() -> Json { Json(Greeting { message: "Hello from JSON".into() }) } #[tokio::main] async fn main() { let app = Router::new() .route("/", get(root)) .route("/greet.json", get(greet)); let addr = SocketAddr::from(([127, 0, 0, 1], 3000)); let listener = tokio::net::TcpListener::bind(addr).await.unwrap(); println!("Listening on http://{addr}"); axum::serve(listener, app).await.unwrap(); }