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:
- Tài liệu reqwest: https://docs.rs/reqwest
- Hiểu về Xác thực Truy cập Cơ bản HTTP: https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication
- Lập trình bất đồng bộ trong Rust: https://rust-lang.github.io/async-book/
- Tài liệu crate base64 của rust: https://docs.rs/base64