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.1 | 2018 年 10 月 31 日 |
#8 in #contrib
2,542 个月下载量
用于 rocket_contrib
18KB
169 行
Rocket
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: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
。这将构建和测试核心、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 网站的源代码根据 单独的条款 许可。
依赖项
~2MB
~50K SLoC