5 releases (3 stable)

new 4.2.0 Apr 13, 2024
4.1.0 Jan 13, 2023
4.0.0 Aug 25, 2022
0.2.0 Oct 7, 2020
0.1.0 Apr 20, 2020

#173 in HTTP server

Download history 12/week @ 2023-12-22 19/week @ 2023-12-29 120/week @ 2024-01-05 176/week @ 2024-01-12 147/week @ 2024-01-19 89/week @ 2024-01-26 148/week @ 2024-02-02 178/week @ 2024-02-09 188/week @ 2024-02-16 181/week @ 2024-02-23 232/week @ 2024-03-01 334/week @ 2024-03-08 181/week @ 2024-03-15 299/week @ 2024-03-22 312/week @ 2024-03-29 246/week @ 2024-04-05

1,096 downloads per month
Used in 2 crates

Apache-2.0 OR MIT

20KB
318 lines

Actix Request Identifier Middleware

Latest Version Documentation Rust Hits-of-Code License License

actix-request-identifier implements a middleware for actix-web that generates an ID for each incomming request. By default, a UUID v4 is generated for each request using uuid. The request ID is set via the x-request-id HTTP header (which can be configured) and can be extracted from the request using RequestId.

Example

use actix_request_identifier::{RequestId, RequestIdentifier};
use actix_web::{get, App, HttpServer, Responder};

#[get("/")]
async fn show_request_id(id: RequestId) -> impl Responder {
    format!("{}", id.as_str())
}

#[actix_web::main] // or #[tokio::main]
async fn main() -> std::io::Result<()> {
    HttpServer::new(|| {
        App::new()
            .service(show_request_id)
            .wrap(RequestIdentifier::with_uuid())
    })
    .bind(("127.0.0.1", 8080))?
    .run()
    .await
}

The response looks like this:

$ curl -i 127.0.0.1:8080/
HTTP/1.1 200 OK
content-length: 36
x-request-id: 5f099854-2117-49b3-b252-d6693a85acc5
date: Mon, 20 Apr 2020 06:53:49 GMT

5f099854-2117-49b3-b252-d6693a85acc5

If you want chronologically sortable request IDs, you can enable the uuid-v7-generator feature and RequestIdentifier::with_uuid_v7(). This will generate request IDs using UUID Version 7.

Supported actix-web Versions

crate version actix-web version
0.1.0 v2
0.2.0 v3
4.0.0 v4

License

actix-request-identifier is licensed under either of the following at your option:

Dependencies

~17–31MB
~534K SLoC