Kotlin GraphQL लाइब्रेरी: API के साथ काम करने के लिए संपूर्ण मार्गदर्शिका
\n\nGraphQL API के लिए एक क्वेरी भाषा है जो क्लाइंट को केवल उन डेटा का अनुरोध करने की अनुमति देती है जिनकी उन्हें वास्तव में आवश्यकता होती है। Kotlin पारिस्थितिकी तंत्र में GraphQL के साथ काम करने के लिए कई शक्तिशाली लाइब्रेरीज़ मौजूद हैं। इस लेख में हम तीन मुख्य लाइब्रेरीज़: graphql-kotlin, Apollo Kotlin और KGraphQL का विस्तार से विश्लेषण करेंगे, साथ ही उनके उपयोग के उदाहरण भी दिखाएंगे।
\n\n1. graphql-kotlin — Expedia Group की सर्वर-साइड लाइब्रेरी
\n\ngraphql-kotlin Kotlin में GraphQL सर्वर बनाने के लिए सबसे लोकप्रिय लाइब्रेरी है। यह GraphQL विनिर्देश की सभी क्षमताओं का पूरी तरह से समर्थन करती है और Spring Boot, Ktor और Micronaut फ्रेमवर्क के साथ उत्कृष्ट रूप से एकीकृत होती है।
\n\nस्थापना और कॉन्फ़िगरेशन
\n\nलाइब्रेरी को कनेक्ट करने के लिए build.gradle.kts में निर्भरता जोड़ें:
dependencies {\n // मुख्य लाइब्रेरी\n implementation("com.expediagroup:graphql-kotlin-spring-server:6.5.0")\n \n // एनोटेशन से स्कीमा जनरेशन के लिए\n implementation("com.expediagroup:graphql-kotlin-schema-generator:6.5.0")\n}\n\nएक सरल GraphQL API बनाना
\n\nक्वेरी के लिए डेटा मॉडल और रिज़ॉल्वर परिभाषित करें:
\n\n// डेटा मॉडल\ndata class User(val id: Int, val name: String, val email: String)\n\n// क्वेरी रिज़ॉल्वर\nclass UserQuery : Query {\n fun getUser(id: Int): User? {\n return users.find { it.id == id }\n }\n \n companion object {\n val users = listOf(\n User(1, "अन्ना पेट्रोवा", "anna@example.com"),\n User(2, "इवान सिदोरोव", "ivan@example.com")\n )\n }\n}\n\n// म्यूटेशन रिज़ॉल्वर\nclass UserMutation : Mutation {\n fun createUser(name: String, email: String): User {\n val newUser = User(users.size + 1, name, email)\n users.add(newUser)\n return newUser\n }\n}\n\nअब Spring Boot कॉन्फ़िगरेशन में रिज़ॉल्वर पंजीकृत करें:
\n\n@Configuration\nclass GraphQLConfig {\n @Bean\n fun userQuery(): UserQuery = UserQuery()\n \n @Bean\n fun userMutation(): UserMutation = UserMutation()\n}\n\nAPI से क्वेरी
\n\nGraphQL क्वेरी का उदाहरण:
\n\nquery {\n getUser(id: 1) {\n name\n email\n }\n}\n\nप्रतिक्रिया में केवल अनुरोधित फ़ील्ड होंगे:
\n\n{\n "data": {\n "getUser": {\n "name": "अन्ना पेट्रोवा",\n "email": "anna@example.com"\n }\n }\n}\n\n2. Apollo Kotlin — Android और JVM के लिए क्लाइंट लाइब्रेरी
\n\nApollo Kotlin एक शक्तिशाली GraphQL क्लाइंट है जिसे विशेष रूप से Kotlin और Android के लिए विकसित किया गया है। यह टाइप-सुरक्षित क्वेरी और स्वचालित कोड जनरेशन प्रदान करता है।
\n\nलाइब्रेरी कनेक्ट करना
\n\ndependencies {\n implementation("com.apollographql.apollo:apollo-runtime:3.8.0")\n implementation("com.apollographql.apollo:apollo-normalized-cache-sqlite:3.8.0")\n}\n\nक्वेरी बनाना
\n\nपहले GetUserQuery.graphql फ़ाइल में GraphQL क्वेरी परिभाषित करें:
query GetUser($id: Int!) {\n getUser(id: $id) {\n id\n name\n email\n }\n}\n\nफिर Kotlin में जनरेटेड कोड का उपयोग करें:
\n\nval apolloClient = ApolloClient.builder()\n .serverUrl("http://localhost:8080/graphql")\n .build()\n\nsuspend fun fetchUser(userId: Int): User? {\n val response = apolloClient\n .query(GetUserQuery(userId))\n .execute()\n \n return response.data?.getUser?.let { user ->\n User(\n id = user.id,\n name = user.name,\n email = user.email\n )\n }\n}\n\n3. KGraphQL — Ktor के लिए हल्की लाइब्रेरी
\n\nKGraphQL Ktor एप्लिकेशन में GraphQL सर्वर बनाने के लिए एक न्यूनतम लाइब्रेरी है। यह