サーバが保持しているブロックチェーンを返すメソッド
### 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行ずつ保存するかだな。。