كيفية إجراء طلب HTTP في Rust؟
مرحباً بالجميع! بدأت تعلم Rust وواجهت مهمة تنفيذ طلب HTTP. أحتاج إلى إرسال طلب GET إلى API خارجي والحصول على استجابة JSON. حاولت استخدام المكتبة القياسية، ولكن كما فهمت، لا يوجد فيها عميل HTTP مدمج.
حاولت كتابة شيء كهذا:
use std::io::Read;
fn main() {
let mut response = reqwest::blocking::get("https://api.example.com/data").unwrap();
let mut body = String::new();
response.read_to_string(&mut body).unwrap();
println!("{}", body);
}
لكني أحصل على خطأ: error[E0432]: unresolved import 'reqwest'. على ما يبدو، أحتاج إلى إضافة تبعية في Cargo.toml. كيف يمكنني إضافة crate reqwest بشكل صحيح؟ ما هي البدائل الموجودة؟ أنا مهتم بالنسخة غير المتزامنة (tokio + reqwest) والنسخة المحظورة (البسيطة).
أتوقع الحصول على مثال عملي مع معالجة الأخطاء، بحيث لا ينهار الكود عند فشل الطلب. يُفضل مع تحليل JSON باستخدام serde_json. شكراً مسبقاً على المساعدة.