Gửi một yêu cầu HTTP với xác thực cơ bản

Rust:
Gửi một yêu cầu HTTP với xác thực cơ bản

Làm thế nào:

Đầu tiên, thêm crate cần thiết vào Cargo.toml của bạn:

[dependencies]
reqwest = "0.11"
base64 = "0.13"

Bây giờ, đây là mã Rust để gửi một yêu cầu GET với xác thực cơ bản:

use reqwest::header::{Authorization, Basic};
use std::error::Error;

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let client = reqwest::Client::new();
    let user = "Aladdin";
    let password = "open sesame";
    
    let auth = Basic {
        username: user.into(),
        password: Some(password.into()),
    };
    
    let response = client
        .get("http://example.com/secrets")
        .header(Authorization(auth))
        .send()
        .await?;
    
    let content = response.text().await?;
    println!("Response: {}", content);
    
    Ok(())
}

Nếu chính xác, nó sẽ in ra các bí mật. Bạn hiểu cốt lõi.

Sâu hơn

Trước reqwest, bạn sẽ thấy mọi người vật lộn với curl trong Rust. Đó giống như việc ưa thích cưa tay hơn là cưa máy. Xác thực cơ bản, mặc dù dễ ợt, nhưng không phải là Fort Knox. Chỉ là mã hóa Base64 của “tên người dùng:mật khẩu” – không có mã hóa, vì vậy HTTPS là điều bắt buộc.

Có thay thế không? OAuth 2.0 nhảy vòng quanh cơ bản, cung cấp token thay vì thông tin đăng nhập cụ thể. Tuy nhiên, nó phức tạp. Sau đó, có xác thực Bearer, giữ token giống như một cái bắt tay bí mật.

Bên dưới lớp vỏ, reqwest là một khách hàng HTTP cấp cao chơi đẹp với các tính năng bất đồng bộ của Rust. Cấu trúc ‘Basic’ tạo tiêu đề, ‘Authorization’ nhét nó vào, và presto, bạn đang gõ cửa máy chủ với một lời thì thầm bí mật.

Xem Thêm

Để biết thêm chi tiết và phép thuật: