Kotlin पर GraphQL: लाइब्रेरी और टूल्स का पूर्ण अवलोकन
GraphQL API के लिए एक क्वेरी भाषा और आपके मौजूदा डेटा के साथ इन क्वेरी को निष्पादित करने के लिए एक रनटाइम वातावरण है। यह क्लाइंट को ठीक उसी डेटा का अनुरोध करने की क्षमता प्रदान करता है जिसकी उन्हें आवश्यकता है, जो इसे REST का एक शक्तिशाली विकल्प बनाता है। Kotlin इकोसिस्टम में GraphQL बैकएंड बनाने के लिए कई परिपक्व लाइब्रेरी मौजूद हैं। इस लेख में, हम मुख्य टूल्स, उनके सिंटैक्स और उपयोग के उदाहरणों का विस्तार से विश्लेषण करेंगे।
GraphQL के लिए Kotlin क्यों?
Kotlin, JVM पर चलने वाली एक स्थिर रूप से टाइप की गई भाषा होने के नाते, टाइप-सेफ GraphQL स्कीमा बनाने के लिए उपयुक्त है। Kotlin कंपाइलर कोड लिखने के चरण में त्रुटियों से बचने में मदद करता है, और अभिव्यंजक सिंटैक्स कोड को स्वच्छ और संक्षिप्त बनाता है। Kotlin में GraphQL के साथ काम करने के लिए मुख्य लाइब्रेरी में शामिल हैं:
- graphql-kotlin (Expedia Group द्वारा) — सबसे लोकप्रिय लाइब्रेरी, जो Spring Boot के साथ गहराई से एकीकृत है।
- KGraphQL — सरल कॉन्फ़िगरेशन और न्यूनतम API पर जोर देने वाला एक विकल्प।
- Apollo Kotlin — Android और KMP के लिए क्लाइंट लाइब्रेरी, लेकिन सर्वर क्षमताएं भी प्रदान करती है।
graphql-kotlin लाइब्रेरी
graphql-kotlin Kotlin पर GraphQL सर्वर बनाने के लिए लाइब्रेरी का एक सेट है। मुख्य दृष्टिकोण स्कीमा के स्वचालित जनरेशन के लिए एनोटेशन और data-क्लास का उपयोग करना है।
स्थापना
build.gradle.kts में निर्भरता जोड़ें:
dependencies { implementation("com.expediagroup:graphql-kotlin-spring-server:7.0.0") implementation("com.expediagroup:graphql-kotlin-schema-generator:7.0.0")}उदाहरण: एक सरल क्वेरी
एक data-क्लास और रिज़ॉल्वर परिभाषित करें:
import com.expediagroup.graphql.server.operations.Query
data class User(val id: Int, val name: String, val email: String)
class UserQuery : Query { fun getUser(id: Int): User { // डेटाबेस से प्राप्त करने का अनुकरण return User(id = id, name = "Alice", email = "alice@example.com") }}graphql-kotlin स्वचालित रूप से एक स्कीमा उत्पन्न करेगा। अब क्लाइंट एक क्वेरी निष्पादित कर सकता है:
query { getUser(id: 1) { name email }}प्रतिक्रिया में केवल अनुरोधित फ़ील्ड होंगे:
{ "data": { "getUser": { "name": "Alice", "email": "alice@example.com" } }}म्यूटेशन (डेटा में परिवर्तन)
म्यूटेशन के लिए Mutation इंटरफ़ेस का उपयोग किया जाता है:
import com.expediagroup.graphql.server.operations.Mutation
class UserMutation : Mutation { fun createUser(name: String, email: String): User { // उपयोगकर्ता बनाने का तर्क return User(id = 2, name = name, email = email) }}संबंधित क्वेरी:
mutation { createUser(name: "Bob", email: "bob@example.com") { id name }}KGraphQL लाइब्रेरी
KGraphQL अधिक DSL-उन्मुख दृष्टिकोण प्रदान करता है, जिसमें एनोटेशन की आवश्यकता नहीं होती है। स्कीमा प्रोग्रामेटिक रूप से बनाई जाती है।
स्थापना
dependencies { implementation("com.apurebase:kgraphql:0.18.0") implementation("com.apurebase:kgraphql-ktor:0.18.0") // Ktor के लिए}उदाहरण: स्कीमा परिभाषा
import com.apurebase.kgraphql.schema.dsl.SchemaBuilder
val schema = SchemaBuilder { query("hello") { resolver { -> "Hello, World!" } }
query("user") { resolver { id: Int -> User(id = id, name = "Charlie", email = "charlie@example.com") } }
mutation("createUser") { resolver { name: String, email: String -> User(id = 3, name = name, email = email) } }}फिर इसे वेब फ्रेमवर्क से जोड़ें
पुस्तकालय में भी
PHP में परीक्षण: फ्रेमवर्क और टूल का अवलोकन (PHPUnit, Pest, Codeception)
ClosedXML C# (.NET) पूर्ण गाइड: उदाहरणों के साथ
PHP में Respect\\Validation लाइब्रेरी के साथ डेटा वैलिडेशन
जावा में मशीन लर्निंग: डेवलपमेंट के लिए मुख्य लाइब्रेरीज़ का अवलोकन