51个版本
使用旧的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.1.3 | 2016年12月31日 |
#4 in #contrib
13,735 每月下载量
在 不到 84 crates 中使用
1.5MB
15K SLoC
Rocket
Rocket是一个专注于易用性、可表达性和速度的Rust(nightly)网络框架。以下是一个完整的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 year old named John!
发送到浏览器。如果传递了一个无法解析为 u8
的 <age>
字符串,则不会调用路由,导致404错误。
文档
Rocket有详细的文档
官方社区支持渠道是#rocket:mozilla.org
在Matrix上,以及在Freenode上的桥接#rocket
IRC频道chat.freenode.net
。我们建议您通过Riot通过Matrix加入我们。如果您更喜欢IRC,您可以通过Kiwi IRC客户端或您自己的客户端加入。
构建
nightly
Rocket需要Rust的nightly版本,因为它大量使用了语法扩展。这意味着上面介绍示例中的前两行难以驾驭是必须的。
核心、代码生成和贡献
所有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
您可以通过访问https://127.0.0.1:8000
看到Hello, world!
。
测试
要测试Rocket,只需从源代码树的根目录运行./scripts/test.sh
。这将构建并测试core
、codegen
、contrib
库以及所有示例。该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的文档。
贡献
贡献绝对、积极地欢迎和鼓励!贡献的形式很多。您可以
我们旨在保持Rocket代码质量处于最高水平。这意味着您贡献的任何代码都必须是
- 注释:公共项必须有注释。
- 文档:公开项必须有rustdoc注释,如果有适用示例。
- 风格:您的代码应尽可能使用
rustfmt
。 - 简单:您的代码应尽可能简单、地道地完成任务。
- 已测试:你必须为添加的任何功能添加(并通过)令人信服的测试。
- 聚焦:你的代码应该只做它应该做的事,不做其他任何事。
所有拉取请求都由CI进行代码审查和测试。请注意,除非你明确说明,否则你提交给Rocket的任何有意贡献都将根据MIT许可证和Apache许可证版本2.0进行双许可,不附带任何额外条款或条件。
许可证
Rocket可以在以下任一许可证下使用,由你选择
- Apache许可证版本2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
Rocket网站源代码的许可条件是独立的。
依赖关系
~8-26MB
~423K SLoC