Kotlin के साथ GraphQL API का परिचय
\nGraphQL Facebook द्वारा विकसित API के लिए एक क्वेरी भाषा है, जो क्लाइंट को केवल उन्हीं डेटा का अनुरोध करने की अनुमति देती है जिनकी उन्हें वास्तव में आवश्यकता होती है। REST के विपरीत, जहां प्रत्येक एंडपॉइंट एक निश्चित डेटा संरचना लौटाता है, GraphQL लचीलापन और नियंत्रण प्रदान करता है। Kotlin, JVM के लिए एक आधुनिक स्थिर रूप से टाइप की गई भाषा होने के नाते, अपनी संक्षिप्तता और सुरक्षा के कारण ऐसे API बनाने के लिए आदर्श है। इस ट्यूटोरियल में, हम graphql-kotlin लाइब्रेरी और Spring Boot का उपयोग करके Kotlin पर एक सरल GraphQL सर्वर चरण दर चरण बनाएंगे।
\nलेख के अंत तक, आप सीख जाएंगे:
\n- \n
- Gradle के साथ Kotlin प्रोजेक्ट सेट करना \n
- GraphQL स्कीमा को परिभाषित करना (प्रकार, क्वेरी, म्यूटेशन) \n
- क्वेरी को संसाधित करने के लिए रिज़ॉल्वर लागू करना \n
- GraphQL Playground के माध्यम से API का परीक्षण करना \n
चरण 1: प्रोजेक्ट और निर्भरताएँ सेट करना
\nआरंभ करने के लिए, Gradle का उपयोग करके एक नया Kotlin प्रोजेक्ट बनाएं। हम कॉन्फ़िगरेशन को सरल बनाने के लिए Spring Boot और GraphQL एकीकरण के लिए graphql-kotlin-spring-server का उपयोग करेंगे।
\nबेसिक प्रोजेक्ट बनाना
\nएक प्रोजेक्ट डायरेक्टरी और build.gradle.kts फ़ाइल बनाएं:
plugins {\n id("org.springframework.boot") version "3.2.0"\n id("io.spring.dependency-management") version "1.1.4"\n kotlin("jvm") version "1.9.21"\n kotlin("plugin.spring") version "1.9.21"\n}\n\ngroup = "com.example"\nversion = "0.0.1-SNAPSHOT"\n\njava {\n sourceCompatibility = JavaVersion.VERSION_17\n}\n\nrepositories {\n mavenCentral()\n}\n\ndependencies {\n implementation("org.springframework.boot:spring-boot-starter-web")\n implementation("com.expediagroup:graphql-kotlin-spring-server:7.0.1")\n implementation("com.expediagroup:graphql-kotlin-schema-generator:7.0.1")\n testImplementation("org.springframework.boot:spring-boot-starter-test")\n}\n\ntasks.withType {\n kotlinOptions {\n freeCompilerArgs += "-Xjsr305=strict"\n jvmTarget = "17"\n }\n} \nइसके बाद, src/main/kotlin/com/example/Application.kt में मुख्य एप्लिकेशन क्लास बनाएं:
package com.example\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication\nimport org.springframework.boot.runApplication\n\n@SpringBootApplication\nclass Application\n\nfun main(args: Array<String>) {\n runApplication<Application>(*args)\n}\n\nचरण 2: डेटा मॉडल और GraphQL स्कीमा को परिभाषित करना
\nGraphQL सख्त टाइपिंग का उपयोग करता है। आइए एक सरल डेटा मॉडल परिभाषित करें - एक पुस्तक (Book) और एक लेखक (Author)।
डेटा क्लास बनाना
\nsrc/main/kotlin/com/example/model/Book.kt फ़ाइल बनाएं:
package com.example.model\n\ndata class Book(\n val id: String,\n val title: String,\n val author: Author,\n val year: Int\n)\n\ndata class Author(\n val id: String,\n val name: String,\n val nationality: String\n)\ngraphql-kotlin लाइब्रेरी इन data-क्लास के आधार पर स्वचालित रूप से GraphQL प्रकार उत्पन्न करेगी। प्रत्येक फ़ील्ड स्कीमा में एक फ़ील्ड बन जाएगा।
\nक्वेरी के लिए रिज़ॉल्वर
\nअब एक सेवा बनाएं जो डेटा प्रदान करेगी। src/main/kotlin/com/example/service/BookService.kt बनाएं:
package com.example.service\n\nimport com.example.model.Author\nimport com.example.model.Book\nimport org.springframework.stereotype.Service\n\n@Service\nclass BookService {\n private val books = mutableListOf(\n Book("1", "युद्ध और शांति", Author("a1", "लियो टॉल्स्टॉय", "रूस"), 1869),\n Book("2", "अपराध और दंड", Author("a2", "फ्योदोर दोस्तोयेव्स्की", "रूस"), 1866),\n Book("3", "1984", Author("a3", "जॉर्ज ऑरवेल", "यूनाइटेड किंगडम"), 1949)\n )\n\n fun getAllBooks(): List<Book> = books\n fun getBookById(id: String): Book? = books.find { it