サーバが保持しているブロックチェーンを返すメソッド
### axumでjsonを返す方法について
use axum::{routing::get, Json, Router}; use serde_json::{json, Value}; #[tokio::main] async fn main() { let app = Router::new().route("/", get(||async {"Hello, World!"})) .route("/json", get(json)); let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap(); axum::serve(listener, app).await.unwrap(); } async fn json() -> Json<Value> { Json(json!({"data": 42})) }
### Struct(構造体)をjsonにしてAPIにする方法
use axum::{routing::get, Json, Router}; use serde_json::{json, Value}; use serde::{Serialize, Deserialize}; #[derive(Serialize, Deserialize, Debug)] struct Name { family: String, first: String, age: u32, } #[tokio::main] async fn main() { let app = Router::new().route("/", get(||async {"Hello, World!"})) .route("/json", get(json)); let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap(); axum::serve(listener, app).await.unwrap(); } async fn json() -> Json<Value> { let mut names: Vec<Name> = Vec::new(); let n1 = Name { family: "Yamada".to_string(), first: "Taro".to_string(), age: 20 }; let n2 = Name { family: "Tanaka".to_string(), first: "Hanako".to_string(), age: 18 }; names.push(n1); names.push(n2); let data = serde_json::to_string(&names).unwrap(); Json(json!(data)) }
“[{\”family\”:\”Yamada\”,\”first\”:\”Taro\”,\”age\”:20},{\”family\”:\”Tanaka\”,\”first\”:\”Hanako\”,\”age\”:18}]”
ここまではOKなんだけど、問題は、これをどうやって読み取ってNameごとに1行ずつ保存するかだな。。