Anfrageketten-ID

Die Request-ID-Middleware ist sehr flexibel. Der Generator (IdGenerator) wird zur Erzeugung der ID verwendet, und Sie können Ihren eigenen ID-Generator definieren, solange Sie das IdGenerator-Trait implementieren. Standardmäßig wird der UlidGenerator bereitgestellt.

Zusätzlich können Sie steuern, ob bereits vorhandene requestid überschrieben werden sollen. Sie können auch header_name und weitere Einstellungen vornehmen. Details finden Sie in der Dokumentation.

Beispielcode

main.rs
Cargo.toml
request-id/src/main.rs
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:5800").bind().await;
    let router = Router::new().hoop(RequestId::new()).get(hello);
    Server::new(acceptor).serve(router).await;
}