use rocket::tokio;
use rocket::data::{Data, ToByteUnit};
#[post("/debug", data = "<data>")]
async fn debug(data: Data<'_>) -> std::io::Result<()> {
// Stream at most 512KiB all of the body data to stdout.
data.open(512.kibibytes())
.stream_to(tokio::io::stdout())
.await?;
Ok(())
}
Rust Web 框架 Rocket 发布 v0.5:支持异步、SSE、WebSockets 等
历经四年多,四个 RC 版本、一千次 commit、一千多个 issue、讨论和 PR 之后,Rocket v0.5 正式发布了。
Rocket v0.5部分重要新功能包括:
支持稳定的Rust编译器:Rocket v0.5基于Rust稳定版本进行编译和构建,开发者现在可以使用稳定发布通道中的
rustc
编译和构建 Rocket 应用程序,不再需要使用#![feature(..)]
crate 属性。支持异步I/O:Rocket v0.5重新构建了核心请求处理部分,利用了Rust中最新的异步网络功能。Rocket现在可以自动在机器上的所有可用核心上多路复用请求处理,使路由处理程序可以声明为异步并使用await语法。
支持Sentinels:Rocket v0.5引入了Sentinels,这是Rocket框架独有的功能。Sentinels提供了一种自动的最后防线,可以在出现无效条件时中止应用程序的启动。Sentinels可以在Rocket之外实现,并且应该尽可能地使用它们。
支持流和SSE:Rocket v0.5引入了实时的、类型化的异步流。Rocket的新异步流部分包含了更多详细信息,我们鼓励所有感兴趣的人查看新的实时、多房间聊天示例。
支持WebSockets:Rocket v0.5通过新的升级API引入了对HTTP连接升级的支持。这个API允许响应器在现有的HTTP连接中控制与客户端的原始I/O,从而允许将HTTP连接升级到任何协议,包括WebSockets。
全面的表单功能支持:Rocket v0.5完全改进了表单支持,支持多部分上传、任意嵌套的集合、即时验证等。Rocket的新表单协议允许应用程序表达任何结构,任意嵌套和集合,无需任何自定义代码。
除了上述功能之外,Rocket v0.5还引入了其他40多个新功能和重大改进,包括安全和隐私头、优雅的关闭、灵活的配置系统、类型系统强制的数据限制等。
Rocket v0.5的发布是一个重要的里程碑,为Rust开发者提供了一个强大而易用的Web框架。我们鼓励所有用户升级到Rocket v0.5,并查看完整的CHANGELOG以了解所有新功能和改进。
请注意,Rocket v0.4仍然会得到支持和安全更新,直到Rocket v0.6发布为止。