57次发布

0.5.1 2024年5月23日
0.5.0 2023年11月17日
0.5.0-rc.32023年3月24日
0.5.0-rc.22022年5月9日
0.1.3 2016年12月31日

#1892 in 过程宏

Download history 33291/week @ 2024-04-15 31585/week @ 2024-04-22 32506/week @ 2024-04-29 28910/week @ 2024-05-06 31695/week @ 2024-05-13 32607/week @ 2024-05-20 33577/week @ 2024-05-27 35564/week @ 2024-06-03 33151/week @ 2024-06-10 34222/week @ 2024-06-17 33198/week @ 2024-06-24 24896/week @ 2024-07-01 30384/week @ 2024-07-08 31717/week @ 2024-07-15 32217/week @ 2024-07-22 29231/week @ 2024-07-29

124,848 每月下载量
不到 22 个 crate中使用

MIT/Apache

630KB
9K SLoC

Rocket

Build Status Rocket Homepage Current Crates.io Version Matrix: #rocket:mozilla.org IRC: #rocket on irc.libera.chat

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 岁的John!发送到浏览器。如果传递了一个无法解析为u8<age>字符串,则该路由不会被调用,导致404错误。

文档

Rocket有广泛的文档

  • 概述:简要了解Rocket的独特之处。
  • 快速入门:如何尽快开始。
  • 入门:如何开始您的第一个Rocket项目。
  • 指南:Rocket的详细指南和参考。
  • API文档:rustdocs。

官方社区支持渠道为 Matrix 上的 #rocket:mozilla.org 以及 Libera.Chat 上的桥接 #rocket IRC 频道,频道地址为 irc.libera.chat。我们建议您通过 Element 加入 Matrix。如果您更喜欢使用 IRC,您可以通过 Kiwi IRC 客户端 或您自己的客户端加入。

示例

examples/ 目录中提供了大量的示例。每个示例都可以使用 Cargo 编译和运行。例如,以下命令序列构建并运行了 Hello, world! 示例:

cd examples/hello
cargo run

通过访问 https://127.0.0.1:8000,您应该能看到 Hello, world!

构建和测试

core 目录包含了三个核心库:libcodegenhttp,分别以 rocketrocket_codegenrocket_http 的形式发布。后两者是实现细节,并从 rocket 中重新导出。

测试

可以通过从源代码树的根目录运行 ./scripts/test.sh 来运行 Rocket 的完整测试套件。该脚本在所有配置中构建和测试所有库和示例。它接受以下标志:

  • --examples:测试 examples/ 中的所有示例
  • --contrib:分别测试每个 contrib 库和功能
  • --core:分别测试每个 core/lib 功能
  • --benchmarks:运行所有基准测试
  • --all:在所有配置中运行所有测试

此外,还可以通过一个 +${toolchain} 标志,其中 ${toolchain} 是一个有效的 rustup 工具链字符串,作为第一个参数传递。该标志被转发到 cargo 命令。任何其他额外的参数都将直接传递给 cargo

要单独测试 crate,只需在 crate 的目录中运行 cargo test --all-features

代码生成测试

使用 trybuild 测试代码生成诊断;测试可以在各个 codegen crate 的 codegen/tests/ui-fail 目录中找到。每个测试都链接到兄弟 ui-fail-stableui-fail-nightly 目录,分别包含稳定和夜间编译器的预期错误输出。要更新代码生成测试 UI 输出,运行带有 TRYBUILD=overwrite 的代码生成测试套件,并检查 diff.std* 文件。

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.4https://rocket.rs/v0.4 找到。未发布版本的文档在分支 ${branch} 中,可在以下地址找到:https://api.rocket.rs/${branch}https://rocket.rs/${branch}。例如,主分支 master 的文档可在 https://api.rocket.rs/masterhttps://rocket.rs/master 找到。未发布分支的文档会定期更新。

贡献

我们非常欢迎和鼓励贡献!贡献可以有多种形式。您可以

  1. 通过 issue 提交功能请求或错误报告。
  2. 通过 issue 要求改进文档。
  3. 需要反馈的问题 进行评论。
  4. 通过 pull requests 贡献代码。

我们的目标是保持 Rocket 代码质量处于最高水平。这意味着您贡献的任何代码都必须

  • 注释:复杂和不明显的功能必须进行适当的注释。
  • 文档:公共项必须具有带有示例的文档注释(如果适用)。
  • 风格:您的代码风格应与现有和周围代码风格相匹配。
  • 简洁:您的代码应尽可能简单和地道地完成任务。
  • 测试:您必须为任何新功能编写(并通过)令人信服的测试。
  • 专注:您的代码应只做它应该做的事,不做其他事。

所有 pull request 都会经过代码审查和 CI 测试。请注意,除非您明确说明,否则您提交给 Rocket 的任何贡献将根据 MIT 许可证和 Apache 许可证 2.0 版本双许可,没有任何附加条款或条件。

许可证

Rocket 的许可证可以是以下之一,任选其一

Rocket 网站文档的许可证根据 单独的条款

依赖项

~7–38MB
~530K SLoC