HTTP היא שיטה פופולרית להפליא לתקשורת עם שרתים מרוחקים. השתמש בספריית Rust המעולה הזו כדי לעזור לפשט את התהליך.

כמו רוב שפות התכנות, אתה יכול להשתמש ב-Rust כדי לשלוח ולקבל נתונים באמצעות HTTP. כאשר אתה בונה שירות מבוסס אינטרנט, לעתים קרובות תצטרך לשלב שירות אחד או יותר. לעתים קרובות תעשה זאת על ידי שליחת בקשות HTTP.

ל-Rust יש פונקציונליות מובנית עבור פעולות HTTP. ישנן גם ספריות רבות במערכת האקולוגית של Rust שעוזרות לך לקיים אינטראקציה עם HTTP ולבנות שירותי HTTP.

ביצוע בקשות HTTP עם חלודה

מספר ספריות Rust זמינות להגשת בקשות HTTP, כולל Reqwest, יֶתֶר, ו לִגלוֹשׁ ספריות. Reqwest הוא הפופולרי ביותר בקרב מפתחי Rust.

Reqwest היא ספריית לקוח ברמה גבוהה המספקת API פשוט ונוח לביצוע בקשות HTTP. Reqwest מספקת פונקציונליות לשליחת בקשות וטיפול בתגובות ושגיאות. הוא מפשט פרטים רבים מאחורי ביצוע בקשת HTTP ותומך בתכונות מתקדמות כמו בקשות אסינכרוניות באמצעות טוקיו זמן ריצה. זה גם מטפל בהסרת הרצף של JSON, כותרות HTTP, פסקי זמן לחיבור והגדרות SSL.

תמצא את ספריית Reqwest שימושית אם אתה חדש ב-Rust או חסר לך ניסיון עם שירותי HTTP.

instagram viewer

כדי להתחיל עם Reqwest, הוסף את ה-Reqwest ו טוקיו ספריות לתלות של הפרויקט שלך. Tokio היא ספריית זמן ריצה אסינכרונית הפועלת באופן הדדי עם Reqwest. אתה יכול להוסיף את התלות האלה שלך Cargo.toml קובץ לאחר יצירת פרויקט Rust.

[תלות]
טוקיו = { גרסה = "1.15", תכונות = ["מלא"] }
reqwest = { גרסה = "0.11", תכונות = ["json"] }

לאחר שהוספת את ספריות Reqwest ו-Tokio לתלות של הפרויקט שלך, Cargo תתקין אותן כאשר תבנה את התוכנית שלך.

HTTP GET בקשות עם Reqwest

אתה תגיש בקשות GET לאחזור נתונים משרת אינטרנט. בקשות GET יכולות לאחזר דפי HTML, נתוני JSON או קבצים בינאריים כמו תמונות או סרטונים.

Reqwest מאפשר לך לציין את נקודת הקצה של כתובת האתר כמחרוזת יחד עם פרמטרי שאילתה וכותרות עבור הבקשה.

כך תוכל לשלוח בקשת HTTP GET לכתובת אתר:

להשתמש reqwest:: שגיאה;

אסינכרוןfnget_request() -> תוֹצָאָה {
לתת תגובה = reqwest:: get(" https://www.example.com").לְהַמתִין?;
println!("סטטוס: {}", response.status());

לתת body = response.text().לְהַמתִין?;
println!("גוף:\n{}", גוף);

בסדר(())
}

#[tokio:: main]
אסינכרוןfnרָאשִׁי() -> תוֹצָאָה {
get_request().לְהַמתִין?;
בסדר(())
}

קוד זה מגדיר פונקציה אסינכרונית, get_request, כדי להדפיס פרטי תגובה מבקשה אל example.com. זה קורא ל reqwest של מודול לקבל שיטה ומדפיס את קוד המצב של התגובה וגוף.

הנה התוצאה של הקריאה ל- get_request פונקציה מה רָאשִׁי פוּנקצִיָה:

טיפול בשגיאות HTTP עם Reqwest

תצטרך לטפל בשגיאות מבקשות HTTP כשהן מתעוררות. ספריית Reqwest מספקת שְׁגִיאָה סוג שבו אתה יכול להשתמש כדי לטפל בשגיאות. בנוסף, קודי מצב HTTP משרת האינטרנט יכולים לספק מידע על מצב הבקשה.

כך תוכל לטפל בשגיאות HTTP עבור הבקשות שלך עם Reqwest:

להשתמש reqwest:: שגיאה;

אסינכרוןfnhandle_error() -> תוֹצָאָה {
לתת תגובה = reqwest:: get(" https://www.example.com").לְהַמתִין?;

התאמה response.status().as_u16() {
200..=299 => {
לתת body = response.text().לְהַמתִין?;
println!("הַצלָחָה! גוף:\n{}", גוף);
}
400..=599 => {
לתת status = response.status();
לתת error_message = response.text().לְהַמתִין?;
println!("שגיאה {}: {}", status, error_message);
}
_ => {
println!("קוד סטטוס לא צפוי: {}", response.status());
}
}

בסדר(())
}

#[tokio:: main]
אסינכרוןfnרָאשִׁי() -> תוֹצָאָה {
handle_error().לְהַמתִין?;
בסדר(())
}

ה handle_error הפונקציה מבצעת בקשת GET ל example.com, והצהרת ההתאמה מטפלת בכל שגיאה בהתבסס על קוד סטטוס התגובה.

הפונקציה מדפיסה הודעה וקוד המצב בהתאם לתגובה לשרת.

שליחת בקשות HTTP POST עם Reqwest

אתה תבקש בקשות HTTP POST כדי לשלוח נתונים לשרת. אתה יכול לעשות זאת באמצעות reqwest:: לקוח struct שיוצר לקוח והשתמש ב- reqwest:: RequestBuilder struct לבניית הבקשה.

כך תוכל להגיש בקשת POST ל נקודת הקצה של בקשת POST של HTTPbin עם Reqwest:

להשתמש reqwest::{Client, Error};

אסינכרוןfnpost_it() -> תוֹצָאָה {
לתת url = " https://httpbin.org/post";
לתת json_data = r#"{"name": "ג'ון דו", "email": "[email protected]"}"#;

לתת client = reqwest:: Client:: new();

לתת תגובה = לקוח
‎.post (כתובת אתר)
.כּוֹתֶרֶת("סוג תוכן", "application/json")
‎.body (json_data.to_owned())
.לִשְׁלוֹחַ()
.לְהַמתִין?;

println!("סטטוס: {}", response.status());

לתת response_body = response.text().לְהַמתִין?;
println!("גוף התגובה:\n{}", response_body);

בסדר(())
}

#[tokio:: main]
אסינכרוןfnרָאשִׁי() -> תוֹצָאָה {
post_it().לְהַמתִין?;
בסדר(())
}

ה json_data המשתנה מגדיר את נתוני ה-JSON עבור הבקשה, ואת לָקוּחַ המשתנה הוא א reqwest:: לקוח דוגמה לבקשת POST.

ה תְגוּבָה המשתנה הוא בונה הבקשות של POST. ה הודעה שיטה שולחת את בקשת ה-POST לכתובת ה-URL, ואת כּוֹתֶרֶת השיטה מגדירה כותרת HTTP. ה גוּף שיטה מגדירה את גוף הבקשה, ואת לִשְׁלוֹחַ השיטה שולחת את הבקשה.

ה post_it הפונקציה מדפיסה את קוד סטטוס התגובה ואת גוף התגובה למסוף באמצעות println! מאקרו:

טיפול בכותרות ובפרמטרי שאילתה בבקשות ה-HTTP שלך

טיפול בכותרות ובפרמטרים של שאילתות הוא היבט חשוב בביצוע בקשות HTTP. כותרות מכילות מידע נוסף כמו אישורי אימות או מטא נתונים לגבי התוכן המבוקש.

אתה תשתמש בפרמטרים של שאילתה כדי להוסיף מידע נוסף לכתובת אתר כדי שהשרת יוכל לסנן או לשנות תגובה.

הטיפול בכותרות ובפרמטרים של שאילתה מתבצע בתהליך דומה לשליחת בקשות לפוסטים. כך תוכל לטפל בכותרות ובפרמטרי שאילתה בבקשות ה-HTTP שלך עם Reqwest:

להשתמש std:: collections:: HashMap;
להשתמש reqwest::{ Error, header};

#[tokio:: main]
אסינכרוןfnרָאשִׁי() -> תוֹצָאָה {
headers_for_requests().לְהַמתִין?;
בסדר(())
}

אסינכרוןfnheaders_for_requests() -> תוֹצָאָה {
// הגדר את כתובת האתר והכותרות עבור הבקשה
לתת url = " https://example.com/api";
לתתמוט headers = header:: HeaderMap:: new();
headers.insert (header:: USER_AGENT, header:: HeaderValue:: from_static("reqwest"));
headers.insert (header:: CONTENT_TYPE, header:: HeaderValue:: from_static("application/json"));

// הגדר את פרמטרי השאילתה עבור הבקשה
לתתמוט params = HashMap:: new();
params.insert("פו", "בַּר");
params.insert("באז", "קווקס");

// הגש את הבקשה
לתת response = reqwest:: Client:: new()
.get (כתובת אתר)
.headers (כותרות)
.query(&params)
.לִשְׁלוֹחַ()
.לְהַמתִין?;

// טפל בתגובה
println!("{:#?}", תגובה);

בסדר(())
}

תיצור מפת hashmap עבור פרמטרי השאילתה שתעביר לאחר מכן ל- שאילתא שיטה. צור מופע של ה header:: HeaderMap הקלד כדי להוסיף כותרות.

ה headers_for_requests הפונקציה שולחת בקשת GET אל example.com עם מספר כותרות ופרמטרים של שאילתה. הוא משתמש ב- כותרות ו שאילתא שיטות שלוקחות מפות המכילות את הכותרות ואת פרמטרי השאילתה, בהתאמה.

אתה יכול לבנות Full Stack WebApp בחלודה עם WASM

ביצוע בקשות HTTP היא מיומנות שימושית לבניית יישומים מתוחכמים המשלבים פונקציונליות מיישומים אחרים.

אתה יכול לבנות יישומי רשת מלאים ב-Rust עם ספריות כמו Percy, Yew ו-Sycamore שמפשטים מורכבויות לחוויית פיתוח מעולה.