X-Git-Url: https://piware.de/gitweb/?p=learn-rust.git;a=blobdiff_plain;f=axum-server%2Fsrc%2Fmain.rs;fp=axum-server%2Fsrc%2Fmain.rs;h=3212d3f250962e2f422419951e1ce0fd0d355b13;hp=1225f67614184b5b34cc0bb3a9703bb19d225433;hb=cccafbeb9771b16338becafc0d389f5d1ae8e99f;hpb=c9927542defc4cf63e714aef077c84598e48ab00 diff --git a/axum-server/src/main.rs b/axum-server/src/main.rs index 1225f67..3212d3f 100644 --- a/axum-server/src/main.rs +++ b/axum-server/src/main.rs @@ -2,13 +2,17 @@ use std::io; use axum::{ routing::{get, get_service}, - extract::Path, + extract::{Path, TypedHeader}, http::{StatusCode}, response, Router}; -async fn hello(Path(name): Path) -> impl response::IntoResponse { - (StatusCode::OK, format!("Hello {}", name)) +async fn hello(Path(name): Path, user_agent: Option>) -> impl response::IntoResponse { + if let Some(TypedHeader(user_agent)) = user_agent { + (StatusCode::OK, format!("Hello {} from {}", name, user_agent)) + } else { + (StatusCode::OK, format!("Hello {}", name)) + } } #[tokio::main] @@ -24,7 +28,10 @@ async fn main() { ) .layer( tower::ServiceBuilder::new() - .layer(tower_http::trace::TraceLayer::new_for_http()) + .layer( + tower_http::trace::TraceLayer::new_for_http() + .make_span_with(tower_http::trace::DefaultMakeSpan::default().include_headers(true)), + ) ); let addr = std::net::SocketAddr::from(([127, 0, 0, 1], 3000));