परिचय
\nKotlin एक आधुनिक स्थिर रूप से टाइप की गई प्रोग्रामिंग भाषा है जो जावा वर्चुअल मशीन (JVM) पर चलती है और जावा इकोसिस्टम के साथ पूरी तरह से संगत है। अपनी संक्षिप्तता, सुरक्षा और शक्तिशाली कार्यात्मक क्षमताओं के कारण, Kotlin सर्वर-साइड एप्लिकेशन विकसित करने के लिए सबसे लोकप्रिय भाषाओं में से एक बन गया है, खासकर जब Google ने इसे Android के लिए प्राथमिक भाषा के रूप में चुना।
\nइस लेख में, हम हल्के फ्रेमवर्क Ktor और डेटाबेस लाइब्रेरी Exposed का उपयोग करके Kotlin पर एक पूर्ण REST API बनाएंगे। हम सभी CRUD ऑपरेशन (बनाना, पढ़ना, अपडेट करना, हटाना) के समर्थन के साथ कार्य प्रबंधन (To-Do List) के लिए एक सरल सेवा लागू करेंगे। यदि आपने पहले से IntelliJ IDEA और JDK स्थापित कर लिया है, तो पूरी प्रक्रिया में आपको 30 मिनट से अधिक नहीं लगेगा।
\n\n1. प्रोजेक्ट सेटअप
\nशुरू करने के लिए, Gradle समर्थन के साथ एक नया Kotlin प्रोजेक्ट बनाएं। IntelliJ IDEA खोलें और File → New → Project चुनें। प्रोजेक्ट निर्माण विज़ार्ड में, Kotlin → JVM चुनें।
\nचरण 1.1: build.gradle.kts संरचना
\nbuild.gradle.kts फ़ाइल में निम्नलिखित निर्भरताएँ जोड़ें:
plugins {\n kotlin("jvm") version "1.9.0"\n id("io.ktor.plugin") version "2.3.0"\n kotlin("plugin.serialization") version "1.9.0"\n}\n\ndependencies {\n implementation("io.ktor:ktor-server-core:2.3.0")\n implementation("io.ktor:ktor-server-netty:2.3.0")\n implementation("io.ktor:ktor-server-content-negotiation:2.3.0")\n implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.0")\n implementation("org.jetbrains.exposed:exposed-core:0.41.1")\n implementation("org.jetbrains.exposed:exposed-dao:0.41.1")\n implementation("org.jetbrains.exposed:exposed-jdbc:0.41.1")\n implementation("com.h2database:h2:2.1.214")\n implementation("ch.qos.logback:logback-classic:1.4.7")\n}\nइन निर्भरताओं में शामिल हैं: Ktor फ्रेमवर्क, JSON सीरियलाइज़ेशन समर्थन, डेटाबेस के लिए Exposed लाइब्रेरी और परीक्षण के लिए अंतर्निहित H2 डेटाबेस।
\n\nचरण 1.2: प्रवेश बिंदु
\ncom.example पैकेज में Application.kt फ़ाइल बनाएं:
import io.ktor.server.engine.*\nimport io.ktor.server.netty.*\nimport com.example.plugins.*\n\nfun main() {\n embeddedServer(Netty, port = 8080) {\n configureSerialization()\n configureRouting()\n }.start(wait = true)\n}\n\n2. सीरियलाइज़ेशन और रूटिंग सेटअप
\nचरण 2.1: एप्लिकेशन प्लगइन्स
\nplugins निर्देशिका और Serialization.kt फ़ाइल बनाएं:
package com.example.plugins\n\nimport io.ktor.serialization.kotlinx.json.*\nimport io.ktor.server.application.*\nimport io.ktor.server.plugins.contentnegotiation.*\n\nfun Application.configureSerialization() {\n install(ContentNegotiation) {\n json()\n }\n}\n\nचरण 2.2: डेटा मॉडल परिभाषित करना
\nModels.kt फ़ाइल बनाएं:
package com.example.models\n\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class Task(\n val id: Int = 0,\n val title: String,\n val description: String = "",\n val completed: Boolean = false\n)\n\n3. डेटाबेस के साथ काम करना
\nचरण 3.1: कनेक्शन सेटअप
\nDatabaseFactory.kt फ़ाइल बनाएं:
package com.example.database\n\nimport org.jetbrains.exposed.sql.Database\nimport org.jetbrains.exposed.sql.SchemaUtils\nimport org.jetbrains.exposed.sql.transactions.transaction\n\nobject DatabaseFactory {\n fun init() {\n Database.connect("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1", driver = "org.h2.Driver")\n transaction {\n SchemaUtils.create(TasksTable)\n }\n }\n}\n\nचरण 3.2: तालिका परिभाषित करना
\nउसी पैकेज में TasksTable.kt बनाएं:
package co