🥰

フロントエンジニアがRustのaxumでTODOアプリに入門するンゴ②

2024/06/12に公開

この記事はこちら↓の続きです👀
https://zenn.dev/ask_nugey/articles/e888a4b92106f7

前回までのあらすじ💁

  1. Rustで新規プロジェクト作成
  2. サーバーの基本的なセットアップ

今回すること✅

  1. タスクのTODO一覧を取得するAPI作成

タスクの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