自分用の備忘録

VimとかJSとか。やったことのメモ。自分のため。

RustによるWebアプリケーション開発を写経した

わりと迷わず買ったので、一通り写経含めてやってみた。

1〜4章

環境構築から、周辺の説明。 今回のアーキテクチャとか。

本の中だと、APIを作成してフロントエンドから扱う感じなので、普通にテンプレートエンジン使うなら? とかはちょっと寄り道してみたりはした。

askamaを使えばいいっぽい。
axumのexamplesにもaskamaを使ったサンプルがあるので、そこからコードを拝借してみたはいいものの、そのままだと動かないかも。

プロジェクトルートにtemplatesディレクトリを作って、その中にHTMLを置けば良い。

cargo add askama

github.com

let app = Router::new().route("/greet/{name}", get(greet));
// ↓
let app = Router::new().route("/greet/:name", get(greet));

でいけるはず。

5章以降

ここから実装本番。 sqlxコマンドを扱うところでは、 cargo install sqlx-cli の必要はありそう?

https://crates.io/crates/sqlx-cli

と思ったけど、Makefile.tomlには書いてあるから大丈夫そう?

BookRepository実装で、出くわしたやつ。

set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache

Related information:

  * mod.rs#332,9: Actual error occurred here
  * mod.rs#332,9: Error originated from macro call here

 (rustc)

本にも書いてあるけど、.cargo/config.tomlDATABASE_URLを設定すればOK。

で、ここからもひたすら写経を進めていきましたが、5章の分量がとても多く、結構しんどかったですね。
ただ、実際に不慣れな言語でアプリケーションが出来上がっていくのはとても楽しく進められました。

実際にレイヤードアーキテクチャで組んでいけるところも個人的にはよかったです。

実際問題、main.rs一本でちまちま書いていたようなレベルだったので、ファイル分割から、ワークスペース
あとは便利な知らないクレートなども一緒に学ぶことができてとても良かったです。
anyhowとか良さそうでした。

さらに言うと、フロントエンドのコードもNext.jsで書かれているのがあるのでそれも。
丁度Nextどんなもんかなと思っていたところがあったので、ありがたかったですね。

とても内容が薄い読書録になってしまいましたが・・・。