14 个版本

使用旧的 Rust 2015

0.4.11 2022 年 5 月 26 日
0.4.10 2021 年 5 月 22 日
0.4.7 2021 年 2 月 10 日
0.4.6 2020 年 11 月 10 日
0.4.0-rc.12018 年 10 月 31 日

#8 in #contrib

Download history 851/week @ 2024-03-14 944/week @ 2024-03-21 1016/week @ 2024-03-28 701/week @ 2024-04-04 906/week @ 2024-04-11 890/week @ 2024-04-18 996/week @ 2024-04-25 859/week @ 2024-05-02 862/week @ 2024-05-09 822/week @ 2024-05-16 874/week @ 2024-05-23 876/week @ 2024-05-30 664/week @ 2024-06-06 652/week @ 2024-06-13 738/week @ 2024-06-20 405/week @ 2024-06-27

2,542 个月下载量
用于 rocket_contrib

MIT/Apache

18KB
169

Rocket

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

Rocket 是一个专注于易用性、可表达性和速度的 Rust(nightly)Web 框架。以下是一个完整的 Rocket 应用程序的示例

#![feature(proc_macro_hygiene, decl_macro)]

#[macro_use] extern crate rocket;

#[get("/<name>/<age>")]
fn hello(name: String, age: u8) -> String {
    format!("Hello, {} year old named {}!", age, name)
}

fn main() {
    rocket::ignite().mount("/hello", routes![hello]).launch();
}

例如,访问 localhost:8000/hello/John/58,将触发 hello 路由,结果将字符串 Hello, 58 岁的 John! 发送到浏览器。如果传递了一个无法解析为 u8<age> 字符串,则不会调用该路由,导致 404 错误。

文档

Rocket 拥有详尽的文档

  • 概览:简要了解使 Rocket 特殊的原因。
  • 快速入门:如何尽快开始。
  • 入门:如何开始第一个 Rocket 项目。
  • 指南:Rocket 的详细指南和参考。
  • API 文档:rustdocs。

官方社区支持渠道是#rocket:mozilla.org在Matrix上,以及在Freenode上的桥接#rocket IRC频道,地址为chat.freenode.net。我们建议您通过Riot加入Matrix。如果您更喜欢IRC,您可以通过Kiwi IRC客户端或您自己的客户端加入。

构建

夜间版本

Rocket需要Rust的夜间版本,因为它大量使用语法扩展。这意味着上面介绍示例中的前两行繁琐的代码是必须的。

核心、代码生成和贡献

所有Rocket库都由Cargo管理。因此,编译它们很简单。

  • 核心:cd lib && cargo build
  • 代码生成:cd codegen && cargo build
  • 贡献:cd contrib && cargo build --all-features

示例

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

cd examples/hello_world
cargo run

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

测试

要测试Rocket,只需在源代码树的根目录中运行./scripts/test.sh。这将构建和测试核心、codegencontrib库以及所有示例。此test.sh脚本接受无标志或--release标志以在发布模式下测试,或--contrib标志以单独测试所有contrib模块。此脚本由CI运行。

要单独测试一个crate,请在相应的crate目录中运行cargo test --all-features

核心

核心库的测试直接在相应的模块中执行。例如,路由的测试可以在lib/src/router/mod.rs文件的底部找到。

代码生成

代码生成的测试可以在codegen/tests中找到。我们使用从rustc提取的compiletest库进行测试。有关编写编译器测试的信息,请参阅编译器测试文档

文档

您可以通过运行 ./scripts/mk-docs.sh 在本地构建 Rocket API 文档。生成的文档将上传到 api.rocket.rs

贡献

我们绝对欢迎和鼓励贡献!贡献形式多样。您可以

  1. 提交功能请求或错误报告作为 问题
  2. 问题 的形式请求改进文档。
  3. 对需要反馈的 问题 进行评论。
  4. 通过 拉取请求 贡献代码。

我们旨在保持 Rocket 代码质量达到最高水平。这意味着您贡献的任何代码必须

  • 注释:公共项目 必须 有注释。
  • 文档化:公开的项目 必须 有 rustdoc 注释,如果有适用的情况,还应包括示例。
  • 格式化:尽可能将您的代码使用 rustfmt 格式化。
  • 简洁:您的代码应该尽可能简单、地道地完成任务。
  • 测试:您必须为添加的任何功能添加(并通过)令人信服的测试。
  • 专注:您的代码应该只做它应该做的事情,不多也不少。

所有拉取请求都由 CI 进行代码审查和测试。请注意,除非您明确表示,否则您提交给 Rocket 的任何贡献将根据 MIT 许可证和 Apache 许可证 2.0 版本双许可,没有其他附加条款或条件。

许可证

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

Rocket 网站的源代码根据 单独的条款 许可。

依赖项

~2MB
~50K SLoC