Rust初心者が勉強したことを記録する備忘録。
今日やった事
今日やったことをプルリクにしておくと参照するのが楽なことに気づいた。
JSONのシリアライズ/デシリアライズ
serde_json一択です。
引用: isucon7予選のアプリをRustに移植したから解説するね
という記事を見たので serde_json を使ってみた。
serde_json の使い方
jsonにしたいstructにSerialize, Deserializeをつける。
#[derive(Queryable, Serialize, Deserialize)] pub struct Post { pub id: i32, pub title: String, pub body: String, pub published: bool, }
あとは serde_json::to_string や serde_json::from_str を呼べばいい。
let post = Post { ...(略) }; // struct -> json let json = serde_json::to_string(&post).unwrap(); // json -> struct let json_post: Post = serde_json::from_str(&json).unwrap();
ルーティング
ルーティングは 前方一致 なので、 "/posts/{id}"
より前に書く必要がある。
cfg.route("/posts", web::get().to(posts::index))
+ .route("/posts/{id}.json", web::get().to(posts::show_json))
.route("/posts/{id}", web::get().to(posts::show))
本当は content-type などを考慮して良い感じに書くべきなんだろうけど、今日は疲れたので雑に別の関数にした。