5个版本 (3个稳定版)

4.2.0 2024年4月13日
4.1.0 2023年1月13日
4.0.0 2022年8月25日
0.2.0 2020年10月7日
0.1.0 2020年4月20日

#123 in HTTP服务器

Download history 200/week @ 2024-04-14 174/week @ 2024-04-21 102/week @ 2024-04-28 159/week @ 2024-05-05 302/week @ 2024-05-12 326/week @ 2024-05-19 221/week @ 2024-05-26 131/week @ 2024-06-02 124/week @ 2024-06-09 192/week @ 2024-06-16 212/week @ 2024-06-23 108/week @ 2024-06-30 91/week @ 2024-07-07 182/week @ 2024-07-14 155/week @ 2024-07-21 183/week @ 2024-07-28

611 每月下载量
用于 2 个库

Apache-2.0 OR MIT

20KB
318

Actix 请求标识符中间件

Latest Version Documentation Rust Hits-of-Code License License

actix-request-identifier 实现了一个为 actix-web 生成的中间件,为每个传入请求生成一个 ID。默认情况下,使用 uuid 生成每个请求的 UUID v4。请求 ID 通过 x-request-id HTTP 头部(可以配置)设置,并且可以使用 RequestId 从请求中提取。

示例

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
}

响应看起来像这样

$ 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

如果您想按时间顺序排序请求 ID,可以启用 uuid-v7-generator 功能和 RequestIdentifier::with_uuid_v7()。这将使用 UUID 版本 7 生成请求 ID。

支持的 actix-web 版本

crate 版本 actix-web 版本
0.1.0 v2
0.2.0 v3
4.0.0 v4

许可

actix-request-identifier 可选择以下任一许可

依赖

~14–25MB
~448K SLoC