【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のクレートにhyperreqwestがよく使われるが、現在はreqwestを使うのが推奨らしい

低レイヤであれこれやりたい場合のみhyperを使いましょうということらしい hyperの作者はreqwestの作者でもあり、その本人がreqwestを推奨しているとどこかで読んだ。