6 个版本

0.0.6 2023 年 10 月 13 日
0.0.5 2023 年 7 月 17 日
0.0.4 2023 年 3 月 5 日
0.0.3 2022 年 9 月 29 日

#451HTTP 服务器

Download history 188/week @ 2024-04-08 105/week @ 2024-04-15 147/week @ 2024-04-22 76/week @ 2024-04-29 83/week @ 2024-05-06 88/week @ 2024-05-13 101/week @ 2024-05-20 98/week @ 2024-05-27 105/week @ 2024-06-03 100/week @ 2024-06-10 109/week @ 2024-06-17 86/week @ 2024-06-24 103/week @ 2024-07-01 53/week @ 2024-07-08 90/week @ 2024-07-15 135/week @ 2024-07-22

每月 386 下载量

MIT 许可证

58KB
1K SLoC

httpz

一次编写,支持所有 Rust 网络服务器!

Discord Crates.io License

该项目是 🚧 进行中的 🚧。目前它主要围绕 rspc 的目标进行设计,但如果您想在自己的项目中协作使用它,请随时联系我。

用法

    // Define your a single HTTP handler which is supported by all major Rust webservers.
let endpoint = GenericEndpoint::new(
    // Set URL prefix
    "/",
    // Set the supported HTTP methods
    [Method::GET, Method::POST],
    // Define the handler function
    |_req: Request| async move {
        Ok(Response::builder()
            .status(StatusCode::OK)
            .header("Content-Type", "text/html")
            .body(b"Hello httpz World!".to_vec())?)
    },
);

// Attach your generic endpoint to Axum
let app = axum::Router::new().route("/", endpoint.axum());

// Attach your generic endpoint to Actix Web
HttpServer::new({
    let endpoint = endpoint.actix();
    move || App::new().service(web::scope("/prefix").service(endpoint.mount()))
});

// and so on...

查看其他 示例

特性

  • 编写一次 HTTP 处理器并支持 AxumActix WebPoemRocketWarp 以及更多。
  • 支持在兼容的 Web 服务器上的 WebSockets。

使用 httpz 的项目

httpz 主要设计用于使库作者的生活更加轻松。它允许库作者编写和测试一个 HTTP 端点一次,并知道它将适用于所有主要的 Rust HTTP 服务器。

使用 httpz 的库

如果您对使用 httpz 感兴趣并有疑问,请加入 Discord

依赖项

~4–50MB
~752K SLoC