wae_https/middleware/
request_id.rs1use axum::{body::Body, extract::Request, http::Response, middleware::Next};
6use uuid::Uuid;
7
8pub const X_REQUEST_ID: &str = "x-request-id";
10
11pub struct RequestIdLayer;
13
14impl RequestIdLayer {
15 pub async fn middleware(request: Request, next: Next) -> Response<Body> {
17 let request_id = request
18 .headers()
19 .get(X_REQUEST_ID)
20 .and_then(|v| v.to_str().ok())
21 .map(|s| s.to_string())
22 .unwrap_or_else(|| Uuid::new_v4().to_string());
23
24 let mut response = next.run(request).await;
25 response.headers_mut().insert(X_REQUEST_ID, request_id.parse().unwrap());
26 response
27 }
28}