karbon_framework/http/middleware/
request_id.rs1use axum::{extract::Request, middleware::Next, response::Response};
2use axum::http::HeaderValue;
3
4pub async fn request_id(mut request: Request, next: Next) -> Response {
7 let id = match request.headers().get("x-request-id") {
8 Some(existing) => existing.clone(),
9 None => {
10 let id = uuid::Uuid::new_v4().to_string();
11 let val = HeaderValue::from_str(&id).expect("UUID is always valid ASCII");
13 request.headers_mut().insert("x-request-id", val.clone());
14 val
15 }
16 };
17
18 let mut response = next.run(request).await;
19 response.headers_mut().insert("x-request-id", id);
20 response
21}