परिचय: Swift पर REST API तेज़ और आधुनिक क्यों है
iOS और macOS के लिए मोबाइल एप्लिकेशन विकसित करने के लिए न केवल एक सुंदर इंटरफ़ेस की आवश्यकता होती है, बल्कि एक विश्वसनीय सर्वर बैकएंड की भी आवश्यकता होती है। REST API (Representational State Transfer) क्लाइंट और सर्वर के बीच डेटा आदान-प्रदान के लिए वास्तविक मानक बना हुआ है। यदि आप पहले से ही Apple इकोसिस्टम के लिए Swift में लिख रहे हैं, तो उसी भाषा में API बनाना एक तार्किक कदम है। इससे आप डेटा मॉडल का पुन: उपयोग कर सकते हैं, कोड डुप्लिकेशन से बच सकते हैं, और परिवर्तनों को तेज़ी से लागू कर सकते हैं।
इस लेख में, हम आपको दिखाएंगे कि Vapor फ्रेमवर्क — Swift के लिए सबसे लोकप्रिय वेब फ्रेमवर्क — का उपयोग करके Swift में एक पूर्ण REST API कैसे लिखा जाता है। आप सीखेंगे कि प्रोजेक्ट कैसे सेट करें, रूट्स कैसे बनाएं, JSON को कैसे हैंडल करें और सर्वर को कैसे चलाएं। पूरी प्रक्रिया में 30 मिनट से अधिक नहीं लगेगा। तैयार हैं? चलिए शुरू करते हैं!
1. पर्यावरण सेटअप और Vapor स्थापित करना
कोड लिखने से पहले, सुनिश्चित करें कि आपके पास आवश्यक उपकरण स्थापित हैं। Vapor के साथ काम करने के लिए Swift 5.9 या नए (Swift 6 अनुशंसित) की आवश्यकता है। आपको एक टर्मिनल और एक कोड एडिटर (Xcode या VS Code) की भी आवश्यकता होगी।
Vapor टूलबॉक्स स्थापित करना
Vapor टूलबॉक्स एक कमांड-लाइन उपयोगिता है जो प्रोजेक्ट बनाने और प्रबंधित करने को सरल बनाती है। इसे Homebrew के माध्यम से स्थापित करें:
brew install vaporयदि Homebrew स्थापित नहीं है, तो इसे brew.sh से डाउनलोड करें। स्थापना के बाद, संस्करण की जाँच करें:
vapor --versionएक नया प्रोजेक्ट बनाना
टर्मिनल खोलें और कमांड चलाएं:
vapor new MyAPI --template=api--template=api फ़्लैग अनावश्यक फ़ाइलों के बिना REST API के लिए एक बुनियादी संरचना बनाता है। प्रोजेक्ट फ़ोल्डर में जाएं:
cd MyAPIअब प्रोजेक्ट को Xcode में खोलें:
open Package.swiftया किसी अन्य एडिटर का उपयोग करें। हो गया! आपके पास एक साफ Vapor टेम्पलेट है।
2. मूल संरचना: मॉडल, कंट्रोलर और रूट्स
Vapor सर्वर-साइड डेवलपमेंट के लिए अनुकूलित MVC (Model-View-Controller) आर्किटेक्चर का उपयोग करता है। हम To-Do सूची प्रबंधित करने के लिए एक सरल API बनाएंगे।
मॉडल बनाना
मॉडल एक संरचना है जो डेटा का वर्णन करती है। Sources/App/Models/ फ़ोल्डर में, एक फ़ाइल Todo.swift बनाएं:
import Fluentimport Vapor
final class Todo: Model, Content { static let schema = "todos" @ID(key: .id) var id: UUID? @Field(key: "title") var title: String @Field(key: "is_completed") var isCompleted: Bool init() { } init(id: UUID? = nil, title: String, isCompleted: Bool = false) { self.id = id self.title = title self.isCompleted = isCompleted }}हम Fluent का उपयोग करते हैं — डेटाबेस के साथ काम करने के लिए Vapor का ORM। Content प्रोटोकॉल के कारण मॉडल स्वचालित रूप से JSON में सीरियलाइज़ हो जाता है।
कंट्रोलर बनाना
कंट्रोलर में अनुरोध प्रबंधन तर्क होता है। एक फ़ाइल Sources/App/Controllers/TodoController.swift बनाएं:
import Vaporimport Fluent
struct TodoController: RouteCollection { func boot(routes: RoutesBuilder) throws { let todos = routes.grouped("todos") todos.get(use: index) todos.post(use: create) todos.group(":todoID") { todo in todo.delete(use: delete) } } // GET /todos — सभी कार्य प्राप्त करें func index(req: Request) async throws -> [Todo] { try await Todo.query(on: req.db).all() } // POST /todos — एक कार्य बनाएं func create(req: Request) async throws -> Todo { let todo = try req.content.decode(Todo.self) try await todo.save(on: req.db) return todo } // DELETE /todos/:id — एक कार्य हटाएं func delete(req: R