請求鏈路識別碼

Request Id 中介軟體具備高度彈性,其生成器(IdGenerator) 專門用於產生識別碼,您可以自訂專屬的識別碼生成器,只需實作 IdGenerator 這個特徵。系統預設提供的生成器為 UlidGenerator

此外,您可自行控制是否覆蓋現有已存在的 requestid。還能設定 header_name 等參數,詳細內容請參閱官方文件

範例程式碼

main.rs
Cargo.toml
use salvo::prelude::*;

#[handler]
async fn hello(req: &mut Request) -> String {
    format!("Request id: {:?}", req.header::<String>("x-request-id"))
}

#[tokio::main]
async fn main() {
    tracing_subscriber::fmt().init();

    let acceptor = TcpListener::new("0.0.0.0:8698").bind().await;
    let router = Router::new().hoop(RequestId::new()).get(hello);
    Server::new(acceptor).serve(router).await;
}