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

CLI (ממשקי שורת פקודה) הוא חיוני בפיתוח תוכנה וניהול מערכות. CLIs הן תוכנות קלות משקל מבוססות טקסט המציעות דרך יעילה לאינטראקציה עם מחשבים שהם נוחים למפתחים ולמשתמשים חזקים כאחד עבור מקרי שימוש מרובים, כולל אוטומציה, סקריפטים ושלט רחוק מִנהָל.

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

תחילת העבודה בבניית אפליקציות CLI עם חלודה

ישנן מספר חבילות של צד שלישי לבניית אפליקציות CLI ב-Rust, כולל לִטפּוֹחַ, StructOpt, ו טרמיון ארגזים. ארגזים אלו מספקים את התכונות הדרושות לך כדי לפתח כלי CLI מודרניים.

כמו כן, Rust מספקת א std:: env ארגז בספרייה הסטנדרטית שלו המספקת פונקציונליות לעבודה עם משתני סביבה וארגומנטים של שורת הפקודה. ה std:: env ארגז מציע מגוון שיטות וסוגים לעבודה עם סביבות באופן בלתי תלוי בפלטפורמה.

instagram viewer

משתמש ב std:: env ארגז, תוכניות Rust שלך יכולות ליצור אינטראקציה עם הסביבה ולהתאים את ההתנהגות שלהן על סמך גורמים שונים, לרבות משתני סביבה, ארגומנטים של שורת הפקודה והעבודה הנוכחית מַדרִיך.

הפעל פקודה זו כדי ליצור פרויקט Rust חדש עבור אפליקציית CLI שלך עם Cargo, כלי ניהול החבילות של Rust:

cargo new crypto_cli

תלמד איך לבנות אפליקציית CLI שקוראת ל-API של Coinmarketcap עם ה Reqwest ארגז המספק תכונות להכנה בקשות HTTP ב- Rust.

פתח את Cargo.toml קובץ והוסף את reqwest ו טוקיו ארגזים לתלות של הפרויקט שלך:

[תלות]
טוקיו = { גרסה = "1.15", תכונות = ["מלא"] }
reqwest = { גרסה = "0.11", תכונות = ["json"] }
serde = { גרסה = "1.0", תכונות = ["לְהָפִיק"] }
serde_json = "1.0"

ה טוקיו crate היא ספריית זמן ריצה אסינכרונית הפועלת איתה reqwest עבור תכנות אסינכרוני. ה serde ו serde_json ארגזים עוזרים הסדרת JSON וסידריאליזציה.

בתוך ה src תיקיה של פרויקט Rust שלך, צור api.rs ו cli.rs קבצים שבהם תטמיע את קריאת ה-API ופונקציונליות ה-CLI.

גע ב-src/api.rs src/cli.rs

הפקודה צריכה ליצור את הקבצים הרצויים בספריית העבודה של הפרויקט שלך. לאחר כתיבת הפונקציונליות בקבצים המיועדים להפרדת חששות, תקרא לפונקציות ב- רָאשִׁי לתפקד אצלך main.rs קוֹבֶץ.

ביצוע בקשות API ל-API של CoinMarketCap עם Reqwest

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

כאשר אתה נכנס, אתה יכול להירשם לחשבון CoinMarketCap ולאחזר את מפתח ה-API שלך בדף המפתחים של Coinmarketcap. תוכל גם לעיין בתיעוד להנחיות מפורטות ומגבלות תעריפים.

כדי לבצע בקשת API ל- /v2/cryptocurrency/quotes/latest נקודת קצה שמחזירה את ציטוט השוק העדכני ביותר עבור מטבע קריפטוגרפי אחד או יותר, תצטרך להגדיר את structs עבור הנתונים שברצונך לחלץ מה-API וציין את התכונות עם תכונת הנגזרת של Serde.

לאחר מכן תוכל לבקש API לנקודת הקצה ולהשתמש ב- serde_json ארגז כדי לבטל את נתוני ה-JSON למבנה עבור פעולות קלות יותר על סוגי נתוני Rust.

הנה ה הגדרת מבנה שמחזיר את תְעוּדַת זֶהוּת, שֵׁם, סֵמֶל, ו ציטוט נתונים של מטבעות הקריפטו שצוינו

#[נגזר (Debug, Deserialize, Serialize)]
structApiResponse {
נתונים: נתונים,
}

#[נגזר (Debug, Deserialize, Serialize)]
structנתונים {
// הוסף שדות שאתה צריך מאובייקט הנתונים
#[serde (שנה שם = "1")]
crypto_1: מטבע קריפטו,

#[serde (שנה שם = "2")]
crypto_2: מטבע קריפטו,

#[serde (שנה שם = "3")]
crypto_3: מטבע קריפטו,

#[serde (שנה שם = "4")]
crypto_4: מטבע קריפטו,
}

#[נגזר (Debug, Deserialize, Serialize)]
structמטבע מוצפן {
תְעוּדַת זֶהוּת: u32,
שֵׁם: חוּט,
סֵמֶל: חוּט,
// הוסף שדות נוספים לפי הצורך
ציטוט: ציטוט,
}

#[נגזר (Debug, Deserialize, Serialize)]
structציטוט {
USD: QuoteDetails,
}

#[נגזר (Debug, Deserialize, Serialize)]
structציטוט פרטים {
מחיר: f64,
volume_24h: f64,
// הוסף שדות נוספים לפי הצורך
}

ה-API מחזיר נתונים שעשויים להיות יותר ממה שאתה צריך, אבל עם serde ארגז, אתה יכול לציין את הנתונים המדויקים שאתה צריך, כפי שמוצג לעיל.

כעת, אתה יכול לבקש את נקודת הקצה עם Reqwest על ידי יצירת לקוח חדש שמבצע את בקשת ה-GET עם הפרמטרים הנדרשים.

להשתמש reqwest:: לקוח;
להשתמש reqwest:: שגיאה;

פָּאבּאסינכרוןfnקריפטו() -> תוֹצָאָה {
לתת client = Client:: new();

לתת url = " https://pro-api.coinmarketcap.com/v2/cryptocurrency/quotes/latest";

לתת params = [
("תְעוּדַת זֶהוּת", "1,2,3,4"),
("להמיר", "דולר אמריקאי"), // המרת ערכי שוק לדולר ארה"ב
];

לתת תגובה = client.get (כתובת אתר)
.כּוֹתֶרֶת("X-CMC_PRO_API_KEY", "מפתח ה-API שלך כאן")
.query(&params)
.לִשְׁלוֹחַ().לְהַמתִין?;
;

לתת תוצאה: ApiResponse = serde_json:: from_str(&*response.text().לְהַמתִין?;).לְגוֹלֵל();

println!("{:#?}", תוצאה);
בסדר(())
}

ה קריפטו function היא פונקציה אסינכרונית מאופשרת טוקיו המבקשת את נקודת הקצה עם ה- client.get פונקציה לאחר יצירת מופע לקוח עם ה לקוח:: חדש שיטה.

ה כּוֹתֶרֶת קריאת function במופע בונה הבקשות לוקח את מפתח ה-API שלך, ה שאילתא הפונקציה לוקחת את הפרמטרים, ואת לִשְׁלוֹחַ הפונקציה שולחת את הבקשה.

ה קריפטו הפונקציה מבטלת את תגובת ה-JSON עם זה של serde_json from_str שיטה שמקבלת מחרוזת JSON.

סוף - סוף, ה קריפטו הפונקציה מדפיסה את התוצאה של פעולת הדה-סידריאליזציה לקונסולה.

אחזור טיעוני CLI בחלודה

אצלך cli.rs קובץ, אתה תייבא את קריפטו פונקציה מה api.rs קובץ וקרא לפונקציה אם המשתמש זן "קריפטו" כארגומנט בהפעלת הפרויקט עם ריצת מטען פקודה.

הנה איך אתה יכול להשתמש ב- std:: env פונקציה כדי לאחזר את הארגומנט משורת הפקודה:

להשתמש std:: env;
להשתמש ארגז:: api:: קריפטו;

פָּאבּאסינכרוןfncli() {
לתת args: Vec<חוּט> = env:: args().collect();

אם args.len() > 1 && args[1] == "קריפטו" {
crypto().לְהַמתִין.לְגוֹלֵל();
} אַחֵר {
println!("פקודה שגויה. שימוש: קריפטו של cargo run");
}
}

ה cli הפונקציה מאחזרת את כל הארגומנטים משורת הפקודה עם ה- env:: args().collect() פוּנקצִיָה. ה אחרת הצהרה בודקת אם יש ארגומנט נוסף, "קריפטו". אם התנאי מוערך נכון, ה- cli הפונקציה קוראת ל- קריפטו פוּנקצִיָה; אחרת ה cli הפונקציה מדפיסה מחרוזת לקונסולה.

לבסוף, אתה יכול להתקשר ל cli לתפקד ב רָאשִׁי פוּנקצִיָה. עליך להוסיף את #[tokio:: main] תכונה מאז רָאשִׁי פונקציות אינן יכולות להיות אסינכרוניות ב- Rust.

mod api;
mod cli;
להשתמש ארגז:: cli:: cli;

#[tokio:: main]
אסינכרוןfnרָאשִׁי() {
cli().לְהַמתִין;
}

ה רָאשִׁי הפונקציה קוראת ל- cli לתפקד עם ה לְהַמתִין פונקציה שמשהה את הביצוע עד לתוצאה של a עתיד מוכן.

הנה התוצאה של הפעלת ה קריפטו של cargo run פקודה:

אתה יכול לבנות אפליקציות אינטרנט מתוחכמות בחלודה

Rust היא שפת תכנות רב-תכליתית עם מקרי שימוש ויישומים רבים. אתה יכול למנף מסגרות אינטרנט של צד שלישי כמו Actix, Rocket ו-Warp כדי לבנות יישומי אינטרנט ב- Rust. מסגרות אלה מספקות את רוב הפונקציונליות הדרושה לבניית אפליקציות אינטרנט מודרניות.