4.2 - コードを定着させるための初期設定について知る
コードを定着させるための初期設定について知る
このセクションでは、第2章「RustでWebアプリケーションを設計する」と第3章「HTTPリクエストを処理する」で構築した2つの融合コードの初期設定について説明します。この融合により、以下のような構造になります。
図4.1 - 私たちのアプリの構造とそのモジュール
ここでは、メインファイルにすべてのモジュールを登録し、これらのモジュールをすべてビューに引き入れて使用することにします。第2章「RustでWebアプリケーションをデザインする」のコマンドラインインターフェイスを、実質的にWebビューに置き換えているのです。これらのモジュールを組み合わせることで、コードベースには以下のようなファイルができあがります。
そして、to_doモジュールをmain.rsファイルの同じディレクトリにボルトで固定するのです。第2章「RustでWebアプリケーションをデザインする」を読んでto_doモジュールをビルドした場合、to_doモジュールは以下の構造になっているはずです。
├── to_do
│ ├── enums.rs
│ ├── mod.rs
│ ├── structs
│ │ ├── base.rs
│ │ ├── done.rs
│ │ ├── mod.rs
│ │ └── pending.rs
│ └── traits
│ ├── create.rs
│ ├── delete.rs
│ ├── edit.rs
│ ├── get.rs
│ └── mod.rs
さて、前章で紹介したviewsモジュールのボルトには、以下のようなものが入っているはずです。
すべてのコードを含む完全な構成は、以下のGitHubレポに掲載されています。
https://github/PacktPublishing/Rust-for-Web-Developers/tree/master/chapter04/getting_to_know_the_initial_setup
さて、前の章のモジュールをプロジェクトに追加したので、プログラムの中でそれらを結合することができます。これを行うには、新しい src/main.rs ファイルを作成する必要があります。まず、構築したモジュールをインポートし、次のコードを使って基本的なサーバーを定義しなければなりません。
use actix_web::{App, HttpServer};
mod views;
mod to_do;
mod state;
mod processes;
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| {
let app = App::new().configure(views::views_factory);
return app
})
.bind("127.0.0.1:8000")?
.run()
.await
}
前のコードでは、モジュールを定義し、次にサーバーを定義しました。サーバーは views_factory を利用しているので、この章の残りの部分では、このファイルを変更する必要はありません。その代わり、views_factory関数で呼び出されるファクトリー関数を連鎖させることにします。
この時点で、私たちは腰を落ち着けて、前の章で行ったすべてのハードワークの配当を評価することができます。原理の分離とよく定義されたモジュールのおかげで、最小限の労力でコマンドラインプログラムのロジックをサーバーインターフェースに取り込むことができました。あとは、ビューモジュールに接続し、ビューにパラメータを渡すだけです。しかし、次のセクションに進む前に、サーバーを確実に実行できるようにするために、いくつかの細かい手入れをしなければなりません。まず、Cargo.tomlファイルの依存関係には、以下の要件があります。
そして、cargo runコマンドを実行し、ブラウザ上でログインとログアウトのビューが動作することを確認します。これで、ビューにパラメータを渡す作業を開始することができます。