【Rust】HTTPのレスポンスをparseする
よくやるのでメモ
関連パッケージ
[dependencies] reqwest = { version = "0.11.22", features = ["json"] } serde = { version = "1.0.188", features = ["derive"] } tokio = { version = "1.32.0", features = ["full"] }
サンプルコード
use serde::Deserialize; #[derive(Debug, Deserialize)] struct User { id: i32, name: String } #[tokio::main] async fn main() { let response: User = reqwest::get("http://localhost:3000/user").await.unwrap().json::<User>().await.unwrap(); println!("{:?}", response); }
ちなみに
httpのクレートにhyper
とreqwest
がよく使われるが、現在はreqwestを使うのが推奨らしい
低レイヤであれこれやりたい場合のみhyperを使いましょうということらしい hyperの作者はreqwestの作者でもあり、その本人がreqwestを推奨しているとどこかで読んだ。