30 मिनट में Swift पर REST API कैसे लिखें: शुरुआती लोगों के लिए
\n\nSwift केवल iOS और macOS के लिए मोबाइल ऐप बनाने की भाषा नहीं है। Vapor फ्रेमवर्क के आगमन के साथ, Swift पर सर्वर-साइड एप्लिकेशन विकसित करना सुलभ और सुविधाजनक हो गया है। इस लेख में, हम दिखाएंगे कि कैसे सिर्फ 30 मिनट में Swift पर एक सरल REST API लिखा जा सकता है। आप Vapor के साथ काम करने के बुनियादी सिद्धांतों को सीखेंगे, रूट बनाना, अनुरोधों को संसाधित करना और JSON प्रतिक्रियाएँ लौटाना सीखेंगे।
\n\nयह मार्गदर्शिका उन शुरुआती लोगों के लिए आदर्श है जो Swift की मूल बातों से परिचित हैं, लेकिन उन्होंने कभी सर्वर कोड नहीं लिखा है। हम कोड उदाहरणों और स्पष्टीकरणों के साथ, चरण दर चरण प्रक्रिया को समझेंगे।
\n\nREST API क्या है और इसकी आवश्यकता क्यों है?
\n\nREST (Representational State Transfer) नेटवर्क पर वितरित एप्लिकेशन के घटकों के बीच बातचीत की एक आर्किटेक्चरल शैली है। REST API क्लाइंट एप्लिकेशन (जैसे, iOS ऐप) को HTTP अनुरोधों के माध्यम से सर्वर पर डेटा प्राप्त करने और भेजने की अनुमति देता है।
\n\nREST में उपयोग किए जाने वाले मुख्य HTTP तरीके:
\n- \n
- GET — डेटा प्राप्त करना \n
- POST — नया संसाधन बनाना \n
- PUT — मौजूदा संसाधन को अपडेट करना \n
- DELETE — संसाधन को हटाना \n
हमारे उदाहरण के लिए, हम कार्यों की सूची (Todo List) के प्रबंधन के लिए एक सरल API बनाएंगे। यह सभी चार बुनियादी CRUD संचालन (Create, Read, Update, Delete) का समर्थन करेगा।
\n\nVapor की स्थापना और प्रोजेक्ट बनाना
\n\nVapor Swift के लिए सबसे लोकप्रिय वेब फ्रेमवर्क है। शुरू करने के लिए, Homebrew के माध्यम से Vapor Toolbox स्थापित करें:
\n\nbrew install vapor\n\nस्थापना के बाद, एक नया प्रोजेक्ट बनाएँ:
\n\nvapor new TodoAPI\ncd TodoAPI\n\nयह कमांड पहले से कॉन्फ़िगर किए गए सर्वर के साथ एक प्रोजेक्ट संरचना बनाएगा। Xcode में प्रोजेक्ट खोलें:
\n\nopen Package.swift\n\nXcode में, आप Vapor प्रोजेक्ट की मानक संरचना देखेंगे। मुख्य कोड Sources/App फ़ोल्डर में स्थित है।
डेटा मॉडल बनाना
\n\nकार्यों के साथ काम करने के लिए हमें एक मॉडल की आवश्यकता है। Sources/App/Models फ़ोल्डर में Todo.swift फ़ाइल बनाएँ:
import Vapor\nimport Fluent\n\nfinal class Todo: Model, Content {\n static let schema = "todos"\n \n @ID(key: .id)\n var id: UUID?\n \n @Field(key: "title")\n var title: String\n \n @Field(key: "is_completed")\n var isCompleted: Bool\n \n init() {}\n \n init(id: UUID? = nil, title: String, isCompleted: Bool = false) {\n self.id = id\n self.title = title\n self.isCompleted = isCompleted\n }\n}\n\nहम Fluent का उपयोग कर रहे हैं — Swift के लिए एक ORM जो डेटाबेस के साथ काम करता है। हमारे उदाहरण में, सरलता के लिए हम SQLite का उपयोग करेंगे। Content प्रोटोकॉल पर ध्यान दें — यह मॉडल को स्वचालित रूप से JSON में एनकोड/डीकोड करने की अनुमति देता है।
माइग्रेशन और डेटाबेस सेटअप
\n\nअब अपने मॉडल के लिए एक माइग्रेशन बनाएँ। Sources/App/Migrations फ़ोल्डर में CreateTodo.swift फ़ाइल जोड़ें:
import Fluent\n\nstruct CreateTodo: Migration {\n func prepare(on database: Database) -> EventLoopFuture<Void> {\n return database.schema("todos")\n .id()\n .field("title", .string, .required)\n .field("is_completed", .bool, .required)\n .create()\n }\n \n func revert(on database: Database) -> EventLoopFuture<Void> {\n return database.schema("todos").delete()\n }\n}\n\nconfigure.swift फ़ाइल में, डेटाबेस और माइग्रेशन का पंजीकरण जोड़ें:
import Fluent\nimport FluentSQLiteDriver\n\npublic func configure(_ app: Application) throws {\n app.databases.use(.sqlite(.file("db.sqlite")), as: .sqlite)\n \n app.migrations.add(CreateTodo())\n \n