20 个版本
0.5.1 | 2024 年 5 月 23 日 |
---|---|
0.5.0 | 2023 年 11 月 17 日 |
0.5.0-rc.3 | 2023 年 3 月 24 日 |
0.5.0-rc.2 | 2022 年 5 月 9 日 |
0.4.0-rc.1 | 2018 年 10 月 31 日 |
#537 in Web 编程
139,357 每月下载量
用于 468 个 crates (6 直接使用)
410KB
5.5K SLoC
Rocket
Rocket 是一个专注于可用性、安全性、可扩展性和速度的 Rust 异步 Web 框架。
#[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])
}
例如,访问 localhost:8000/hello/John/58
将触发 hello
路由,并将字符串 Hello, 58 year old named John!
发送到浏览器。如果传递了一个无法解析为 u8
的 <age>
字符串,则不会调用路由,导致 404 错误。
文档
Rocket 有详细的文档
官方社区支持渠道是 Matrix 上的 #rocket:mozilla.org
以及在 Libera.Chat 上的桥接 #rocket
IRC 频道,频道地址为 irc.libera.chat
。我们推荐您通过 Element 加入 Matrix Matrix。如果您偏好使用 IRC,可以通过 Kiwi IRC 客户端 或您自己的客户端加入。
示例
在 examples/
目录中提供了大量的示例。每个示例都可以使用 Cargo 进行编译和运行。例如,以下命令序列构建并运行了 Hello, world!
示例
cd examples/hello
cargo run
您可以通过访问 https://127.0.0.1:8000
来看到 Hello, world!
。
构建和测试
core
目录包含了三个核心库:lib
、codegen
和 http
,分别作为 rocket
、rocket_codegen
和 rocket_http
发布。后两者是实现细节,并从 rocket
中重新导出。
测试
可以使用 ./scripts/test.sh
从源代码树的根目录运行 Rocket 的完整测试套件。该脚本会在所有配置中构建和测试所有库和示例。它接受以下标志:
--examples
:测试examples/
目录中的所有示例--contrib
:单独测试每个contrib
库和功能--core
:单独测试每个core/lib
功能--benchmarks
:运行所有基准测试--all
:在所有配置中运行所有测试
此外,还可以传递一个 +${toolchain}
标志,其中 ${toolchain}
是一个有效的 rustup
工具链字符串,作为第一个参数。该标志将被转发到 cargo
命令。任何其他额外的参数都将直接传递给 cargo
。
要单独测试软件包,只需在软件包的目录中运行 cargo test --all-features
即可。
Codegen 测试
使用 trybuild
测试代码生成诊断;测试可以在相应 codegen
软件包的 codegen/tests/ui-fail
目录中找到。每个测试都通过符号链接添加到同级的 ui-fail-stable
和 ui-fail-nightly
目录中,分别包含稳定和夜间编译器的预期错误输出。要更新代码生成测试 UI 输出,请使用 TRYBUILD=overwrite
运行代码生成测试套件,并检查 .std*
文件的 diff
。
API 文档
使用 ./scripts/mk-docs.sh
构建 API 文档。生成的资源上传到 api.rocket.rs。
已发布版本的文档,例如 ${x}
,可以在以下链接找到:https://api.rocket.rs/v${x}
和 https://rocket.rs/v${x}
。例如,0.4
的文档可以在 https://api.rocket.rs/v0.4 和 https://rocket.rs/v0.4 找到。分支 ${branch}
中未发布的版本文档可以在以下链接找到:https://api.rocket.rs/${branch}
和 https://rocket.rs/${branch}
。例如,master
分支的文档可以在 https://api.rocket.rs/master 和 https://rocket.rs/master 找到。未发布分支的文档会定期更新。
贡献
我们热烈欢迎并鼓励贡献!贡献可以有多种形式。您可以
我们旨在保持 Rocket 代码质量处于最高水平。这意味着您贡献的任何代码都必须是
- 注释:复杂且不明显的功能必须有适当的注释。
- 文档:公共项目 必须 有文档注释,如有适用,需包含示例。
- 风格:您的代码风格应与现有和周围的代码风格相匹配。
- 简单:您的代码应尽可能简单地完成其任务。
- 测试:您必须为任何新功能编写(并通过)令人信服的测试。
- 专注:您的代码应只做它应该做的事,不做其他。
所有拉取请求都经过代码审查和 CI 测试。请注意,除非您明确表示,否则您提交给 Rocket 的任何贡献都将根据 MIT 许可证和 Apache 许可证,版本 2.0,无任何附加条款或条件,进行双许可。
许可证
Rocket 根据您的选择,许可如下
- Apache 许可证,版本 2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 https://opensource.org/licenses/MIT)
Rocket 网站文档的许可证根据 单独的条款。
依赖项
~7–38MB
~580K SLoC