परिचय
Kotlin एक आधुनिक प्रोग्रामिंग भाषा है जो बैकएंड डेवलपमेंट में तेजी से लोकप्रियता प्राप्त कर रही है। इसके संक्षिप्त सिंटैक्स, Java के साथ पूर्ण संगतता, और Ktor फ्रेमवर्क जैसे शक्तिशाली टूल्स के कारण, Kotlin में REST API लिखने में सचमुच 30 मिनट लगते हैं। इस लेख में, हम कार्य सूची (Todo API) प्रबंधन के लिए एक पूर्ण-विशेषताओं वाला REST API बनाएंगे। आप सीखेंगे कि प्रोजेक्ट कैसे सेट करें, एंडपॉइंट कैसे बनाएं, डेटाबेस कैसे कनेक्ट करें, और API का परीक्षण कैसे करें। कोई अनावश्यक सिद्धांत नहीं — केवल अभ्यास।
चरण 1: प्रोजेक्ट सेटअप और निर्भरताएँ
त्वरित शुरुआत के लिए, हम IntelliJ IDEA (कम्युनिटी एडिशन) या कोई अन्य एडिटर का उपयोग करते हैं। आइए Kotlin DSL के साथ एक नया Gradle प्रोजेक्ट बनाएं।
प्रोजेक्ट संरचना बनाना
build.gradle.kts फ़ाइल में निम्नलिखित निर्भरताएँ जोड़ें:
plugins { kotlin("jvm") version "1.9.22" application}
repositories { mavenCentral()}
dependencies { implementation("io.ktor:ktor-server-core:2.3.7") implementation("io.ktor:ktor-server-netty:2.3.7") implementation("io.ktor:ktor-server-content-negotiation:2.3.7") implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.7") implementation("org.jetbrains.exposed:exposed-core:0.44.1") implementation("org.jetbrains.exposed:exposed-dao:0.44.1") implementation("org.jetbrains.exposed:exposed-jdbc:0.44.1") implementation("com.h2database:h2:2.2.224") implementation("ch.qos.logback:logback-classic:1.4.14")}
application { mainClass.set("ApplicationKt")}हम उपयोग कर रहे हैं:
- Ktor — HTTP सर्वरों के लिए एक हल्का एसिंक्रोनस फ्रेमवर्क।
- Exposed — डेटाबेस के साथ काम करने के लिए एक ORM।
- H2 — डेवलपमेंट के लिए एक एम्बेडेड डेटाबेस।
- Kotlinx.serialization — JSON के साथ काम करने के लिए।
चरण 2: डेटा मॉडल बनाना और डेटाबेस कनेक्ट करना
आइए कार्य तालिका की संरचना परिभाषित करें। Database.kt फ़ाइल बनाएं:
import org.jetbrains.exposed.sql.Tableimport org.jetbrains.exposed.sql.insertimport org.jetbrains.exposed.sql.selectAllimport org.jetbrains.exposed.sql.transactions.transaction
object Tasks : Table() { val id = integer("id").autoIncrement() val title = varchar("title", 255) val completed = bool("completed").default(false)
override val primaryKey = PrimaryKey(id)}
data class Task(val id: Int, val title: String, val completed: Boolean)
fun initDatabase() { Database.connect("jdbc:h2:mem:test", driver = "org.h2.Driver") transaction { SchemaUtils.create(Tasks) }}यह कोड तीन फ़ील्ड के साथ Tasks तालिका बनाता है: id, title, और completed। initDatabase() फ़ंक्शन इन-मेमोरी डेटाबेस को प्रारंभ करता है।
चरण 3: REST API कंट्रोलर लिखना
अब मुख्य एप्लिकेशन फ़ाइल Application.kt बनाएं। यहां हम सभी एंडपॉइंट परिभाषित करेंगे।
बेसिक सर्वर सेटअप
import io.ktor.server.application.*import io.ktor.server.engine.*import io.ktor.server.netty.*import io.ktor.server.routing.*import io.ktor.server.response.*import io.ktor.server.request.*import io.ktor.serialization.kotlinx.json.*import io.ktor.server.plugins.contentnegotiation.*
fun main() { embeddedServer(Netty, port = 8080) { install(ContentNegotiation) { json() } initDatabase() configureRouting() }.start(wait = true)}CRUD एंडपॉइंट लागू करना
fun Application.configureRouting() { routing { // सभी कार्य प्राप्त करें get("/tasks") { val tasks = transaction { Tasks.selectAll().map { row -> Task( id = row[Tasks.id],