🦀

Rustで処理したデータをJSON形式で返却する

2024/10/07に公開

新しくRustを学習し、フロントとバックエンドを別々にして自作WEBアプリを作りました。
製作過程で、フロントからリクエストを受けてRust, axumで加工したデータを最終的にフロントへJSON形式で返す、という処理をやっていて今後似たようなものを作るときのためにメモ代わりとして残しておきたいと思ったので書き留めておきます。

最終的にフロントに返す形はこのようにしたい

※以下内容は省略します

  • Rust, axumのセットアップ方法
  • ベクタやHashMapの細かい説明
  • ライブラリのインポート文

実際の処理

pub async fn  handler(extract::Query(params):
extract::Query<HashMap<String, String>>) -> Json<serde_json::Value> {


    let mut fruit_list: HashMap<String, Vec<HashMap<String, String>>>  = HashMap::new();
    let mut fruit_item: Vec<HashMap<String, String>> = Vec::new();
    let mut fruit_detail: HashMap<String, String>  = HashMap::new();

    fruit_detail.insert(String::from("grade"), "S".to_string());
    fruit_detail.insert(String::from("price"), "500".to_string());
    fruit_item.push(fruit_detail.clone());
    fruit_list.insert(String::from("りんご"), fruit_item.clone());
    fruit_item.clear();

    fruit_detail.insert(String::from("grade"), "A".to_string());
    fruit_detail.insert(String::from("price"), "400".to_string());
    fruit_item.push(fruit_detail.clone());
    fruit_list.insert(String::from("ぶどう"), fruit_item.clone());
    fruit_item.clear();

    fruit_detail.insert(String::from("grade"), "SS".to_string());
    fruit_detail.insert(String::from("price"), "600".to_string());
    fruit_item.push(fruit_detail.clone());
    fruit_list.insert(String::from("もも"), fruit_item);

    let data = serde_json::json!(fruit_list);
    Json(data)
}

ローカル実行後ブラウザでのリクエスト結果

Discussion