Rust Web 框架 Rocket 发布 v0.5:支持异步、SSE、WebSockets 等


历经四年多,四个 RC 版本、一千次 commit、一千多个 issue、讨论和 PR 之后,Rocket v0.5 正式发布了

Rocket 是支持异步的后端Rust Web框架,专注于可用性、安全性、可扩展性和性能。它使编写安全的Web应用程序变得简单,而不会牺牲生产力或性能。

Rocket v0.5部分重要新功能包括:

  1. 支持稳定的Rust编译器:Rocket v0.5基于Rust稳定版本进行编译和构建,开发者现在可以使用稳定发布通道中的rustc编译和构建 Rocket 应用程序,不再需要使用#![feature(..)]crate 属性。
     

    #[macro_use] extern crate rocket;
    
    #[get("/<name>/<age>")]
    fn hello(name: &str, age: u8) -> String {
    format!("Hello, {} year old named {}!", age, name)
    }
    
    #[launch]
    fn rocket() -> _ {
    rocket::build().mount("/hello", routes![hello])
    }

     

  2. 支持异步I/O:Rocket v0.5重新构建了核心请求处理部分,利用了Rust中最新的异步网络功能。Rocket现在可以自动在机器上的所有可用核心上多路复用请求处理,使路由处理程序可以声明为异步并使用await语法。
     

    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(())
    }

     

  3. 支持Sentinels:Rocket v0.5引入了Sentinels,这是Rocket框架独有的功能。Sentinels提供了一种自动的最后防线,可以在出现无效条件时中止应用程序的启动。Sentinels可以在Rocket之外实现,并且应该尽可能地使用它们。
     

    use rocket::{Rocket, Ignite, Sentinel};
    
    impl Sentinel for MyResponder {
    fn abort(r: &Rocket<Ignite>) -> bool {
    r.state::<T>().is_none() || !r.catchers().any(|c| c.code == Some(400))
    }
    }

     

  4. 支持流和SSE:Rocket v0.5引入了实时的、类型化的异步流。Rocket的新异步流部分包含了更多详细信息,我们鼓励所有感兴趣的人查看新的实时、多房间聊天示例。

  5. 支持WebSockets:Rocket v0.5通过新的升级API引入了对HTTP连接升级的支持。这个API允许响应器在现有的HTTP连接中控制与客户端的原始I/O,从而允许将HTTP连接升级到任何协议,包括WebSockets。

  6. 全面的表单功能支持:Rocket v0.5完全改进了表单支持,支持多部分上传、任意嵌套的集合、即时验证等。Rocket的新表单协议允许应用程序表达任何结构,任意嵌套和集合,无需任何自定义代码。

除了上述功能之外,Rocket v0.5还引入了其他40多个新功能和重大改进,包括安全和隐私头、优雅的关闭、灵活的配置系统、类型系统强制的数据限制等。

Rocket v0.5的发布是一个重要的里程碑,为Rust开发者提供了一个强大而易用的Web框架。我们鼓励所有用户升级到Rocket v0.5,并查看完整的CHANGELOG以了解所有新功能和改进。

请注意,Rocket v0.4仍然会得到支持和安全更新,直到Rocket v0.6发布为止。


相關推薦

2023-07-07

Salvo 可以说是最强大好用的 Rust Web 框架。 主要功能和更新: 最简单的 Handler 和 Middleware 的写法, 两个概念合二为一; 与众不同的路由系统; 丰富且功能强大的自带的中间件, base auth, jwt auth(支持 oidc), csrf, otel, proxy, flash, cors,

2023-04-24

。以下部分简要介绍了该版本的主要变化: 核心改进 WebSockets ContentNegotiation 插件的显试类型 WebSocket ContentNegotiation 插件现在支持指定显式类型: client.webSocket("ws://localhost:8080/echo") { val originalData: Any = Data("hello") sendSerialized(ori

2022-06-11

缩和 URL 重写等。 新版本亮点特性 支持基于 HTTP/2 的 WebSockets RFC 8441 Bootstrapping WebSockets with HTTP/2 支持 HTTP/2 PRIORITY_UPDATE RFC 9218 Extensible Prioritization Scheme for HTTP 为 lighttpd.conf 引入前缀/后缀条件 mod_webdav safe p

2022-06-22

好的 MVC Web 应用程序。 开箱即用的强大 RESTful 路由、WebSockets、插件、命令、日志记录、模板、内容协商 (content negotiation)、会话管理、表单和 JSON 验证、测试框架、静态文件服务器、集群模式、CGI 检测、一等公民的 Unicode 支

2023-08-05

Dioxus 0.4 已发布。 Dioxus (dye•ox•us) 是一个用于在 Rust 中构建类似 React 用户界面的库。Dioxus 支持多平台:Web、桌面、移动、TUI 等。 核心特性 原生的桌面程序支持。 强大的状态管理工具。 支持所有 HTML 标签,监听器和

2024-03-28

Zino 开发框架已发布 0.18 版本!这两个多月的改进,主要集中在以下方面: 添加了Plugin类型,可用于加载异步初始化的插件,支持运行环境选择以及依赖检测; 进一步改善ORM,添加时区设置,优化数据库连接时create_table的

2024-08-27

网信息泄漏问题 增加 重构代码生成器 集成anyline开源框架 支持400+种数据库适配 依赖升级 update springboot 3.2.6 => 3.2.9 update snailjob 1.0.1 => 1.1.2 update mapstruct-plus 1.4.3 => 1.4.4 update hutool 5.8.27 => 5.8.31 解决hutool

2024-08-27

网信息泄漏问题 增加 重构代码生成器 集成anyline开源框架 支持400+种数据库适配 依赖升级 update springboot 3.2.6 => 3.2.9 update snailjob 1.0.1 => 1.1.2 update mapstruct-plus 1.4.3 => 1.4.4 update hutool 5.8.27 => 5.8.31 解决hutool

2023-08-22

可生成一个完整的 Rust Web 项目。使用流行的 Axum 和 Sqlx 框架,您可以研究,也可以抄写。可以快速入门。对熟悉一点的 Rust Web 应用程序开发者而言,莲花也是有重大价值的。您可以光速开发 Rust Web 应用程序。把一半的工作量自

2023-08-24

Xmake 是一个基于 Lua 的轻量级跨平台构建工具。 它非常的轻量,没有任何依赖,因为它内置了 Lua 运行时。 它使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快

2023-12-15

Salvo 是 Rust 实现的简单好用且功能强大的 Web 后端框架。 虽然昨天刚刚发布 0.61, 今天基于 Hyper 1.0 的全新版本就好了。 我们不跟 Axum 比爹爹,我们只跟它比功能,比易用性。 如果你不曾爱上用 Rust 开发 Web 后端,那只是你没有

2022-10-15

些更明显的危险。 6、喜欢:没有抽象的编程 Rust 旨在支持编写 low-level、byte-tweaking 代码的 system-level  程序员;它提供对 raw bits 的访问,并期望程序员能够使用它。该语言设计是为了与许多旧的 C 语言或汇编语言代码共存

2023-12-14

Salvo 是 Rust 实现的简单好用且功能强大的 Web 后端框架。 这是基于 Hyper 1.0-rc4 的最后一个版本,不久就会发布基于 Hyper 1.0 正式版本的下一个版本。 特色: - 有着比 axum 等更丰富的功能,但却更易于上手。 - 跟 go 等其他语言

2024-05-31

Salvo 是 Rust 实现的简单好用且功能强大的 Web 后端框架。 不管你是刚刚 Rust 入门还是使用 Rust 做正规项目开发, Salvo 都很适合。近五年时间的持续维护改进,品质有保证。 同时 Rust 可以让你逃离 Axum 等框架无穷无尽的类型体