14 个版本

使用旧的 Rust 2015

0.2.4 2018 年 9 月 7 日
0.2.3 2018 年 7 月 25 日
0.1.8 2018 年 6 月 6 日
0.1.7 2018 年 5 月 23 日
0.1.2 2018 年 3 月 28 日

#660HTTP 服务器

21 每月下载次数

MIT 许可证

255KB
3K SLoC

Arc-reactor

Arc Reactor

一个用于 Rust 的异步、可扩展、微型 Web 框架。

Crates.io Released API docs

特性

  • 异步。在 arc reactor 中,服务处理器默认是异步的。

  • 与 futures-await 集成。`#[service]` proc_macro 不仅为你的路由处理器推导出 `ArcService` 特性,还将其标记为 `#[async]`,这样你可以在路由处理器中无额外压力地等待 future。

  • 直观的中间件系统。arc reactor 提供了一个易于理解的中间件系统。请参阅设计规范

  • 极简主义。arc reactor 被设计成在 tokio 和 hyper 之上的一个非常薄的解释层。

  • TLS 支持。易于添加 TLS 支持。

  • 选择 Nightly。arc reactor 使用了许多酷炫的功能,包括仅在 nightly channel 上可用的 `proc_macros`,使用 `unstable` 功能标志。

安装

将以下内容添加到你的 `cargo.toml

arc-reactor = "0.2"

Hello World (默认)

Default

演示(不稳定)

Default

Nightly 使用

最初,arc-reactor 是为 nightly 编译器设计的。但 libprocmacro 的不稳定性导致每次发布新的 nightly 编译器时都会中断。

因此,默认情况下,arc-reactor 不再使用 nightly 编译器,将与稳定编译器一起直接工作。🎉 这意味着实验性的 nightly 功能,包括 proc_macros,仅可在 `unstable` 功能标志之后使用。

如果你希望使用带有 nightly 编译器和启用不稳定功能的 arc-reactor:建议你锁定编译器版本。直到 libprocmacro 稳定下来。

如果你希望使用 arc-reactor 的默认功能

  • 实现了满足签名 `Fn(Request, Response) -> FutureResponse` 的所有函数的 `ArcService` 特性。
  • 为满足签名 Fn(Request) -> MiddleWareFuture<Request> 的所有函数实现了特质 MiddleWare<Request>
  • 为满足签名 Fn(Response) -> MiddleWareFuture<Response> 的所有函数实现了特质 MiddleWare<Response>
  • 使用 futures 替代了 futures-awaitfutures-rs 中重新导出。
  • 您将失去在 ServiceHandlers 和 MiddleWares 中对 futures 使用 await! 的能力。
  • 目前,Multipart 的支持是通过不稳定特性实现的,因此您可能需要自行实现。

示例

查看示例文件夹和 API 文档 以了解 arc reactor 的工作方式。
它有很好的文档,应该能帮助您快速入门。

设计

强烈建议您阅读 设计文档,因为它提供了 arc-reactor 内部结构和所做设计决策的全面披露。

贡献

Arc-Reactor 通过放置在 contrib 模块中的中间件实现高度可扩展。

缺少的一些功能包括

  • 日志记录器
  • WebSocket
  • 支持字节范围头部
  • 异步 StaticFileServer
  • JSON 主体解析器
  • Multipart 支持

请随时提交 PR。

许可证

请参阅 许可证

依赖项

~16–28MB
~408K SLoC