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

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

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

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

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



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



अपने API के लिए Rust क्यों चुनें?



  • प्रदर्शन: Rust C/C++ के स्तर पर काम करता है, जो उच्च-लोड सिस्टम के लिए महत्वपूर्ण है।
  • सुरक्षा: स्वामित्व (ownership) और उधार (borrowing) प्रणाली मेमोरी से संबंधित त्रुटियों की पूरी श्रेणियों को समाप्त करती है।
  • अतुल्यकालिकता (Asynchrony): async/await के लिए अंतर्निहित समर्थन आपको हजारों कनेक्शनों को कुशलतापूर्वक संभालने की अनुमति देता है।
  • पारिस्थितिकी तंत्र (Ecosystem): Cargo (पैकेज मैनेजर) और crates.io निर्भरता प्रबंधन को सरल और सुविधाजनक बनाते हैं।


हम कार्यों की सूची (Todo list) के प्रबंधन के लिए एक सरल API बनाएंगे जो CRUD संचालन का समर्थन करेगा। आप रूट्स कॉन्फ़िगर करना, JSON को संभालना और एप्लिकेशन स्थिति के साथ काम करना सीखेंगे।



चरण 1: प्रोजेक्ट सेटअप और निर्भरताएँ स्थापित करना



सबसे पहले, Cargo का उपयोग करके Rust में एक नया प्रोजेक्ट बनाएँ। टर्मिनल खोलें और निष्पादित करें:



cargo new rust_todo_apicd rust_todo_api


अब, आवश्यक निर्भरताएँ जोड़ने के लिए Cargo.toml फ़ाइल को संपादित करें:



[package]name = "rust_todo_api"version = "0.1.0"edition = "2021"

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


आइए समझें कि प्रत्येक लाइब्रेरी की आवश्यकता क्यों है:



  • actix-web — एक उच्च-प्रदर्शन अतुल्यकालिक वेब फ्रेमवर्क।
  • serde — डेटा (JSON) के सीरियलाइजेशन और डीसीरियलाइजेशन के लिए लाइब्रेरी।
  • serde_json — serde के लिए JSON प्रारूप समर्थन।
  • tokio — Rust के लिए अतुल्यकालिक रनटाइम (actix-web डिफ़ॉल्ट रूप से इसका उपयोग करता है)।
  • uuid — हमारे कार्यों के लिए अद्वितीय पहचानकर्ता उत्पन्न करना।


निर्भरताएँ जोड़ने के बाद, सभी पैकेज डाउनलोड और कंपाइल करने के लिए cargo build निष्पादित करें। पहली बार चलाने पर इसमें कुछ मिनट लग सकते हैं।



चरण 2: डेटा मॉडल और एप्लिकेशन संरचना बनाना



src/main.rs फ़ाइल बनाएँ और अपने कार्य का मॉडल परिभाषित करें। हम id, title और completed फ़ील्ड के साथ TodoItem संरचना का उपयोग करेंगे:



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

#[derive(Debug, Serialize, Deserialize, Clone)]struct TodoItem { id: String, title: String, completed: bool,}

#[derive(Debug, Deserialize)]struct CreateTodoRequest { title: String,}

#[derive(Debug, Deserialize)]struct UpdateTodoRequest { title: Option<String>, completed: Option<bool>,}

struct AppState { todos: Mutex<Vec<TodoItem>>,}


महत्वपूर्ण विवरणों पर ध्यान दें:



  • Serialize और Deserialize — serde से ट्रेट्स हैं जो स्वचालित रूप से JSON के साथ काम करने के लिए कोड उत्पन्न करते हैं।
  • Mutex — कई थ्रेड्स से साझा स्थिति तक सुरक्षित पहुँच के लिए उपयोग किया जाता है।
  • Uuid — प्रत्येक कार्य के लिए अद्वितीय पहचानकर्ता उत्पन्न करता है।


अब, main फ़ंक्शन जोड़ें जो सर्वर शुरू करेगा और स्थिति को इनिशियलाइज़ करेगा:



#[actix_web::main]async fn main() -> std::io::R
```                

ब्लॉग

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