30 मिनट में Rust पर REST API कैसे लिखें: चरण-दर-चरण मार्गदर्शिका

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: REST API के लिए Rust क्यों?



Rust एक आधुनिक सिस्टम प्रोग्रामिंग भाषा है जो C/C++ के प्रदर्शन और मेमोरी सुरक्षा को जोड़ती है। हाल के वर्षों में इसका उपयोग उच्च-लोड वेब सेवाओं और REST API बनाने के लिए सक्रिय रूप से किया जा रहा है। Actix-web फ्रेमवर्क की बदौलत, आप Rust पर एक पूर्ण REST API सचमुच 30 मिनट में लिख सकते हैं, भले ही आप अभी भाषा सीखना शुरू कर रहे हों।



इस लेख में हम कार्यों की सूची (Todo List) के प्रबंधन के लिए एक सरल लेकिन कार्यशील REST API बनाएंगे। आप सीखेंगे:



  • Actix-web के साथ Rust पर प्रोजेक्ट सेट करना
  • CRUD ऑपरेशन (Create, Read, Update, Delete) लागू करना
  • JSON अनुरोधों और प्रतिक्रियाओं के साथ काम करना
  • रूटिंग और हैंडलर का उपयोग करना


तैयार हैं? चलिए शुरू करते हैं!



चरण 1: प्रोजेक्ट सेटअप और डिपेंडेंसी इंस्टॉल करना



शुरू करने से पहले सुनिश्चित करें कि आपके पास Rust स्थापित है। यदि नहीं, तो यह कमांड चलाएँ:



curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh


एक नया प्रोजेक्ट बनाएँ:



cargo new rust_todo_apicd rust_todo_api


Cargo.toml खोलें और निम्नलिखित डिपेंडेंसी जोड़ें:



[dependencies]actix-web = "4"serde = { version = "1.0", features = ["derive"] }serde_json = "1.0"tokio = { version = "1", features = ["full"] }


यहाँ:

  • actix-web — एक शक्तिशाली एसिंक्रोनस वेब फ्रेमवर्क
  • serde — JSON सीरियलाइज़ेशन/डीसीरियलाइज़ेशन के लिए
  • tokio — एसिंक्रोनस रनटाइम (Actix-web इसका उपयोग अंडर द हुड करता है)


डिपेंडेंसी डाउनलोड और कंपाइल करने के लिए cargo build चलाएँ। इसमें 2-3 मिनट लगेंगे।



चरण 2: डेटा मॉडल और स्टोरेज बनाना



इस प्रोजेक्ट में हम डेटाबेस कनेक्ट नहीं करेंगे — सादगी के लिए हम मेमोरी में वेक्टर का उपयोग करेंगे। आइए कार्य के लिए एक स्ट्रक्चर बनाएँ।



src/main.rs खोलें और निम्नलिखित कोड लिखें:



use actix_web::{web, App, HttpServer, HttpResponse, middleware};use serde::{Deserialize, Serialize};use std::sync::Mutex;

// कार्य का मॉडल#[derive(Serialize, Deserialize, Clone)]struct Task { id: u32, title: String, completed: bool,}

// कार्यों का भंडार (थ्रेड-सेफ)struct AppState { tasks: Mutex<Vec<Task>>,}


स्पष्टीकरण:

  • #[derive(Serialize, Deserialize)] — JSON के साथ काम करने के लिए स्वचालित रूप से विधियाँ उत्पन्न करता है
  • Mutex — कई थ्रेड्स से डेटा तक सुरक्षित पहुँच सुनिश्चित करता है
  • AppState — एप्लिकेशन की स्थिति में संग्रहीत किया जाएगा


चरण 3: CRUD हैंडलर लागू करना



अब प्रत्येक HTTP विधि के लिए हैंडलर फ़ंक्शन जोड़ें। स्ट्रक्चर घोषणाओं के बाद निम्नलिखित कोड डालें:



// सभी कार्य प्राप्त करेंasync fn get_tasks(data: web::Data<AppState>) -> HttpResponse {    let tasks = data.tasks.lock().unwrap();    HttpResponse::Ok().json(tasks.clone())}

// नया कार्य बनाएँasync fn create_task(data: web::Data<AppState>, body: web::Json<Task>) -> HttpResponse { let mut tasks = data.tasks.lock().unwrap(); let new_id = tasks.len() as u32 + 1; let task = Task { id: new_id, title: body.title.clone(), completed: body.completed, }; tasks.push(task.clone()); HttpResponse::Created().json(task)}

// कार्य अपडेट करेंasync fn update_task( data: web::Data<AppState>, path: web::Path<u32>, body: web::Json<Task>,) -> HttpResponse { let mut tasks = data.tasks.lock().unwrap(); let id = path.into_inner(); if let Some(task) = tasks.iter_mut().find(|t| t.id == id) { task.title = body.title.clone(); task.completed = body.completed; HttpRespons

ब्लॉग

पुस्तक अनुशंसाएँ