🥰
フロントエンジニアがRustのaxumでTODOアプリに入門するンゴ②
この記事はこちら↓の続きです👀
前回までのあらすじ💁
- Rustで新規プロジェクト作成
-
サーバーの基本的なセットアップ
- TCPリッスンについて深掘り
- GitHubのCommitはこちら
今回すること✅
-
タスクのTODO一覧を取得するAPI作成
- データはハードコード
- GitHubのCommitはこちら
- Rustの構造体(struct)と便利なアトリビュートを紹介
タスクのTODO一覧を取得するAPI作成するよ!
データの定義
まずは、TODOのデータ構造を定義するよ!
#[derive(Debug, Serialize)] // ①
struct Todo {
id: Uuid,
title: String,
is_completed: bool,
}
①の#[〜〜]
のことをアトリビュートっていいます!
これは色んな便利な機能を付け足せたりできます。
Debug、Serializeのそれぞれ紹介します。
Debug
今回の実装では必須ではありませんが、デバッグしたいときに便利!
Debugをつけることで、以下↓のようにデバックできます(逆にないとprintlnするときにエラーになるよ)
#[derive(Debug)]
struct Todo {
id: Uuid,
title: String,
is_completed: bool,
}
let todo_1 = Todo {
id: Uuid::new_v4(),
title: String::from("Sample Todo 1"),
is_completed: false,
};
println!("{}", todo_1); // ←printlnで表示確認できる🔥🔥🔥
Serialize
今回の実装では必須です!
Rustの構造体(struct)からjsonにデータを変換するためにはSerializeを書く必要があります。
#[derive(Debug, Serialize)]
struct Todo {
〜〜〜
}
// todoの一覧を取得(read)
async fn todos_index() -> Json<Vec<Todo>> {
// ハードコードされたTodoリスト
// TODO: HashMapのような簡易的なDBを作成する
let todos = vec![ // vec(ベクタ)は他の言語で言うところの"配列"
Todo {
id: Uuid::new_v4(),
title: String::from("Sample Todo 1"),
is_completed: false,
},
];
Json(todos) // ←ここでjsonに変換してるよ🔥🔥🔥
}
次回はハードコードしたTODOリストを、メモリ内にデータを一時的に保存する簡易的なDBの形にするよ〜!
ヌギーのSNS(連絡先など)
Discussion