ARTICLES
【Rust】Rocket入門 - Hello, World! 編
はじめに
RustのWeb Framework、Rocketの日本語解説をやっていきます。基本的なレスポンスやリクエストの受け取り方、ルーティング、テンプレートエンジンの利用、Json
の使用、データベースとの連携まで、できるところまでやっていこうと思います。
Rocketは英語の充実したガイドやApiのドキュメントがあるので、英語が読める気力とスキルがある人はそちらを参照することをオススメします。
この(一連の)記事を、国内でのRustおよびRocketの普及と発展を願って投稿します。
実行環境
- OS: macOS Catalina
- IDE: IntelliJ IDEA + Rust Plugin
Overview
取り扱う内容は以下のとおりです。
- Rustのインストール
- Nightly Rustのインストール
- プロジェクトの作成
- Rocketの導入
- Rocketを用いたシンプルなコードの作成・実行
また、今回作成するコードは**こちら**です。
Setup
Rustのインストール
- mac
$ curl https://sh.rustup.rs -sSf | sh
- windows
インストーラーをダウンロードし、実行してください。
Nightly Rustのインストール
Rocket
の利用には、Rustの中でも最も活きの良いRustであるNightly版のRustが必要です。
$ rustup install nightly
Nightly Rustに切り替え
$ rustup default nightly
やっていきましょう
プロジェクトの生成
cargo new rocket_sample
cargo
というRust公式のビルドシステム兼パッケージマネージャを使います。rocket_sample
はプロジェクト名です。名前は任意です。
Rocketの導入
プロジェクトにcrate(ライブラリのこと)を追加します。Cargo.toml
に、次のような記述を加えてください。
[dependencies]
rocket = "0.4.2"
src/main.rs
に設定を追記
Rocket
で多用されるマクロのための設定が必要です。
#![feature(proc_macro_hygiene, decl_macro)]
#[macro_use] extern crate rocket;
文字列を返すだけのページ
src/main.rs
に、次のような関数を設けます。
#[get("/")]
fn index() -> &'static str {
"Hello, World!"
}
ルーティング
設定したページを組み込みます。
fn main() {
rocket::ignite()
.mount("/", routes![index])
.launch();
}
実行
$ cargo run
Updating crates.io index
Compiling proc-macro2 v0.4.30
Compiling unicode-xid v0.1.0
Compiling version_check v0.1.5
Compiling libc v0.2.66
Compiling syn v0.15.44
Compiling byteorder v1.3.2
Compiling matches v0.1.8
Compiling smallvec v1.1.0
Compiling log v0.4.8
Compiling yansi v0.4.0
Compiling bitflags v1.2.1
Compiling cc v1.0.48
Compiling cfg-if v0.1.10
Compiling autocfg v0.1.7
Compiling httparse v1.3.4
Compiling yansi v0.5.0
Compiling safemem v0.3.3
Compiling maybe-uninit v2.0.0
Compiling version_check v0.9.1
Compiling percent-encoding v1.0.1
Compiling untrusted v0.6.2
Compiling typeable v0.1.2
Compiling serde v1.0.104
Compiling language-tags v0.2.2
Compiling traitobject v0.1.0
Compiling state v0.4.1
Compiling memchr v2.2.1
Compiling unicode-bidi v0.3.4
Compiling unicase v1.4.2
Compiling unicode-normalization v0.1.11
Compiling pear_codegen v0.1.2
Compiling indexmap v1.3.0
Compiling rocket_codegen v0.4.2
Compiling rocket v0.4.2
Compiling ring v0.13.5
Compiling idna v0.1.5
Compiling log v0.3.9
Compiling time v0.1.42
Compiling num_cpus v1.11.1
Compiling atty v0.2.13
Compiling quote v0.6.13
Compiling base64 v0.9.3
Compiling base64 v0.10.1
Compiling smallvec v0.6.13
Compiling mime v0.2.6
Compiling url v1.7.2
Compiling hyper v0.10.16
Compiling cookie v0.11.1
Compiling toml v0.4.10
Compiling devise_core v0.2.0
Compiling devise_codegen v0.2.0
Compiling devise v0.2.0
Compiling pear v0.1.2
Compiling rocket_http v0.4.2
Compiling rocket_sample v0.1.0 (/Users/****/github/rocket_sample)
Finished dev [unoptimized + debuginfo] target(s) in 1m 39s
Running `target/debug/rocket_sample`
🔧 Configured for development.
=> address: localhost
=> port: 8000
=> log: normal
=> workers: 8
=> secret key: generated
=> limits: forms = 32KiB
=> keep-alive: 5s
=> tls: disabled
🛰 Mounting /:
=> GET / (index)
🚀 Rocket has launched from http://localhost:8000
接続してみる
起動したサーバーに接続してみましょう。接続先は(おそらく)http://localhost:8000 です。
ブラウザでサーバーに接続し、***Hello, World!***と表示されれば成功です。
お疲れ様でした。今回作成したコードは**こちら**です。
次回予告
Hello, World! 編ということで、今回は開発環境の整備、ライブラリの導入、簡単なコードの実行までをレクチャーしました。
次回は今回のコードの解説をしつつ、基本的なRocketの仕組みやルーティングについて扱いたいと思います。
SHARE THIS POST
Tweet