Rocket确保Rust用的是最新版
rustup default stable
开发者一般使用nightly
rustup default nightly
创建二进制的cargo项目
cargo new hello-rocket --bin
需要添加依赖到cargo.toml
[dependencies]
rocket = "=0.5.0-rc.3"
警告:开发版本必须是git依赖的。 带有-dev标签的开发版本不会被发布。要依赖Rocket的开发版本,你需要将Cargo.toml指向Rocket的git仓库。例如,用git commit hash代替######:
[dependencies] rocket = { git = "https://github.com/SergioBenitez/Rocket", rev = "######" }
src/main.rs
#[macro_use] extern crate rocket;
#[get("/")]
fn index() -> &'static str {
"Hello, world!"
}
#[launch]
fn rocket() -> _ {
rocket::build().mount("/", routes![index])
}
运行后输出
> cargo run
Configured for debug.
>> address: 127.0.0.1
>> port: 8000
>> workers: [..]
>> keep-alive: 5s
>> limits: [..]
>> tls: disabled
>> temp dir: /tmp
>> log level: normal
>> cli colors: true
Routes:
>> (index) GET /
Rocket has launched from http://127.0.0.1:8000
生命周期
Rocket的主要任务是监听传入的网络请求,将请求分派给应用程序代码,并向客户端返回响应。我们把这个从请求到响应的过程称为 "生命周期"。我们把生命周期总结为以下的步骤序列:
路由
Rocket将传入的HTTP请求解析为本地结构,你的代码间接地对其进行操作。Rocket通过与你的应用程序中声明的路由属性相匹配来决定调用哪个请求处理器。
验证
Rocket根据匹配的路由中存在的类型和防护措施来验证传入的请求。如果验证失败,Rocket将请求转发到下一个匹配的路由或调用一个错误处理程序。
处理
与路由相关的请求处理程序被调用,其参数经过验证。这是一个应用程序的主要业务逻辑。处理过程通过返回一个响应来完成。
响应
返回的Response被处理。Rocket生成适当的HTTP响应并将其发送给客户端。这就完成了整个生命周期。Rocket继续监听请求,为每个传入的请求重新启动生命周期。