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日

#2HTTP服务器

Download history 31365/week @ 2024-05-02 29630/week @ 2024-05-09 31420/week @ 2024-05-16 33331/week @ 2024-05-23 33773/week @ 2024-05-30 34126/week @ 2024-06-06 35907/week @ 2024-06-13 32381/week @ 2024-06-20 31209/week @ 2024-06-27 26353/week @ 2024-07-04 29956/week @ 2024-07-11 32179/week @ 2024-07-18 32316/week @ 2024-07-25 31443/week @ 2024-08-01 39198/week @ 2024-08-08 35536/week @ 2024-08-15

144,296 每月下载量
490 个crate(454个直接) 中使用

MIT/Apache

1.5MB
20K SLoC

火箭

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

火箭是一个注重可用性、安全性、可扩展性和速度的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

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

代码生成测试

使用trybuild测试代码生成诊断;测试可以在相应的codegencrates的codegen/tests/ui-fail目录中找到。每个测试都链接到同级的ui-fail-stableui-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.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. 在需要反馈的 issues 上发表评论。
  4. 通过 pull requests 贡献代码。

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

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

所有pull requests都将由CI进行代码审查和测试。请注意,除非您明确声明,否则您提交的任何有意包含在Rocket中的贡献都应双重许可,分别受MIT许可证和Apache许可证版本2.0的约束,不附带任何附加条款或条件。

许可证

Rocket受以下任一许可证的许可,由您选择

Rocket网站文档受 单独条款 的许可。

依赖

~14–46MB
~815K SLoC