परिचय: आधुनिक API के लिए GraphQL और Kotlin एक आदर्श जोड़ी क्यों हैं
आधुनिक वेब डेवलपमेंट में लचीले और कुशल API की आवश्यकता होती है। REST, जो लंबे समय तक मानक रहा, अक्सर over-fetching (जब सर्वर आवश्यकता से अधिक डेटा भेजता है) या under-fetching (जब पूरी जानकारी प्राप्त करने के लिए कई अनुरोधों की आवश्यकता होती है) की समस्या पैदा करता है। GraphQL इन समस्याओं को हल करता है, जिससे क्लाइंट एक ही अनुरोध में केवल आवश्यक डेटा का अनुरोध कर सकता है।
Kotlin, अपनी ओर से, एक आधुनिक, संक्षिप्त और टाइप-सेफ भाषा है जो विश्वसनीय बैकएंड सेवाएँ बनाने के लिए उपयुक्त है। Expedia Group की graphql-kotlin लाइब्रेरी की बदौलत, Kotlin पर GraphQL API बनाना सरल और सहज हो जाता है। इस ट्यूटोरियल में हम कदम दर कदम पुस्तकों की सूची प्रबंधित करने के लिए एक पूर्ण GraphQL API बनाएंगे।
आप क्या सीखेंगे:
- GraphQL समर्थन के साथ Spring Boot प्रोजेक्ट कैसे सेट अप करें।
- Kotlin क्लासेस का उपयोग करके GraphQL स्कीमा कैसे परिभाषित करें।
- Queries और Mutations को कैसे लागू करें।
- अंतर्निहित GraphiQL IDE के माध्यम से API का परीक्षण कैसे करें।
चरण 1: प्रोजेक्ट और निर्भरताएँ सेट अप करना
शुरू करने के लिए, हम एक नया Spring Boot प्रोजेक्ट बनाएंगे। हम Gradle (Kotlin DSL) का उपयोग करेंगे - यह आधुनिक Kotlin प्रोजेक्ट्स के लिए मानक है।
1.1. प्रोजेक्ट बनाना
आप Spring Initializr का उपयोग कर सकते हैं या मैन्युअल रूप से संरचना बना सकते हैं। हमें निम्नलिखित निर्भरताओं की आवश्यकता होगी:
- Spring Web — HTTP सर्वर चलाने के लिए।
- Spring Boot Starter GraphQL — मुख्य एकीकरण।
- Kotlin Reflection — graphql-kotlin लाइब्रेरी के काम करने के लिए।
1.2. build.gradle.kts फ़ाइल
plugins { id("org.springframework.boot") version "3.2.0" id("io.spring.dependency-management") version "1.1.4" kotlin("jvm") version "1.9.20" kotlin("plugin.spring") version "1.9.20"}
group = "com.example"version = "0.0.1-SNAPSHOT"
java { toolchain { languageVersion = JavaLanguageVersion.of(17) }}
repositories { mavenCentral()}
dependencies { implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springframework.boot:spring-boot-starter-graphql") implementation("com.expediagroup:graphql-kotlin-spring-server:7.0.1") implementation("org.jetbrains.kotlin:kotlin-reflect") testImplementation("org.springframework.boot:spring-boot-starter-test")}1.3. application.yml कॉन्फ़िगरेशन
spring: graphql: graphiql: enabled: true # परीक्षण के लिए अंतर्निहित IDE चालू करें schema: locations: "classpath:graphql/**/"server: port: 8080चरण 2: स्कीमा और डेटा मॉडल परिभाषित करना
GraphQL में, स्कीमा क्लाइंट और सर्वर के बीच एक अनुबंध है। graphql-kotlin लाइब्रेरी Kotlin क्लासेस (code-first दृष्टिकोण) के आधार पर स्वचालित रूप से स्कीमा परिभाषित करने की अनुमति देती है। यह मैन्युअल रूप से .graphqls फ़ाइलें लिखने की आवश्यकता को समाप्त करता है।
2.1. डेटा मॉडल बनाना
हम एक सरल Book मॉडल और मेमोरी में डेटा संग्रहीत करने के लिए एक रिपॉजिटरी बनाएंगे।
package com.example.graphqlkotlin.model
data class Book( val id: String, val title: String, val author: String, val year: Int)2.2. रिपॉजिटरी (in-memory)
package com.example.graphqlkotlin.repository
import com.example.graphqlkotlin.model.Bookimport org.springframework.stereotype.Repositoryimport java.util.concurrent.ConcurrentHashMap
@Repositoryclass BookRepository { private val books = ConcurrentHashMap( mapOf( "1" to Book("1", "वॉर एंड पीस", "लियो टॉल्स्टॉय", 1869), "2" to Book("2", "क्राइम एंड पनिशमेंट", "फ्योडोर दोस्तोयेव्स्की", 1866)```