Rust:
基本認証を使用したHTTPリクエストの送信
実装方法 (How to:)
Rustでのコードサンプルです。ここではreqwest
クレートを使い、Basic認証付きのHTTP GETリクエストを送ります。
use reqwest::header::{Authorization, Basic};
use std::collections::HashMap;
#[tokio::main]
async fn main() -> Result<(), reqwest::Error> {
let client = reqwest::Client::new();
let user = "username"; // あなたのユーザー名
let pass = "password"; // あなたのパスワード
let auth = Basic {
username: user.to_string(),
password: Some(pass.to_string()),
};
let res = client.get("http://example.com")
.header(Authorization(auth))
.send()
.await?;
let status = res.status();
let headers = res.headers().clone();
let body = res.text().await?;
println!("Status: {}", status);
println!("Headers:\n{:?}", headers);
println!("Body:\n{}", body);
Ok(())
}
このコードを実行すると、レスポンスのステータスコード、ヘッダー、ボディがコンソールに表示されます。
詳細解説 (Deep Dive)
Basic認証は、RFC 7617で定義されており、最もシンプルなHTTP認証の方法の一つです。ヘッダーにAuthorization
を含め、base64
でエンコードされたユーザー名とパスワードをサーバーに送ります。ただし、HTTPSを使わなければ、第三者による簡単な傍受が可能なので、安全性には注意が必要です。
代わりにトークンベースの認証やOAuthなどのより安全な認証方法もありますが、簡単さや互換性のためにBasic認証が使われることもあります。
具体的な実装では、Rustの強力な型システムとエラーハンドリングを使って、不正なレスポンスやネットワークエラーを適切に扱うことができます。reqwest
クレートは、非同期のHTTPリクエストを簡単に送れる高レベルのAPIを提供しています。