GraphQL Java — Java में GraphQL API को लागू करने के लिए सर्वर-साइड लाइब्रेरी

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

GraphQL Java — Java में GraphQL API को लागू करने के लिए सर्वर-साइड लाइब्रेरी



GraphQL Java Java भाषा में GraphQL विनिर्देश को लागू करने के लिए एक शक्तिशाली और लचीली सर्वर-साइड लाइब्रेरी है। यह डेवलपर्स को कुशल, टाइप-सुरक्षित और आसानी से विस्तार योग्य API बनाने की अनुमति देता है, जिससे क्लाइंट केवल आवश्यक डेटा का अनुरोध कर सकते हैं। यह लाइब्रेरी सक्रिय रूप से समुदाय द्वारा समर्थित है और कई बड़ी कंपनियों द्वारा production-वातावरण में उपयोग की जाती है।



मुख्य विशेषताएँ

  • GraphQL विनिर्देश का पूर्ण समर्थन — सभी प्रकारों, निर्देशों, म्यूटेशनों, सब्सक्रिप्शनों और फ़्रैगमेंटों का कार्यान्वयन।
  • लचीली प्रकार प्रणाली — Java क्लासेस (code-first) और SDL (schema-first) दोनों के आधार पर स्कीमा परिभाषित करने की क्षमता।
  • अंतर्निहित एसिंक्रोनस समर्थन — अनुरोधों के कुशल प्रसंस्करण के लिए CompletableFuture का उपयोग।
  • DataLoader — N+1 अनुरोध समस्या और बैच डेटा लोडिंग को हल करने के लिए अंतर्निहित उपयोगिता।
  • परीक्षण उपकरण — स्कीमा और रिज़ॉल्वर के यूनिट-परीक्षण के लिए अंतर्निहित क्लासेस।
  • विस्तार योग्यता — कस्टम स्केलर, निर्देश और सत्यापन उपकरणों के लिए समर्थन।


लाइब्रेरी की आर्किटेक्चर

लाइब्रेरी कई प्रमुख घटकों से बनी है:

  • GraphQLSchema — API स्कीमा का प्रतिनिधित्व करने वाला ऑब्जेक्ट।
  • DataFetcher — डेटा प्राप्त करने के लिए कार्यात्मक इंटरफ़ेस (GraphQL में रिज़ॉल्वर का एनालॉग)।
  • TypeResolver — बहुरूपी प्रकारों (इंटरफ़ेस और यूनियन) को हल करने के लिए इंटरफ़ेस।
  • ExecutionStrategy — अनुरोध निष्पादन रणनीति (डिफ़ॉल्ट रूप से एसिंक्रोनस)।
  • Instrumentation — अतिरिक्त तर्क (लॉगिंग, मेट्रिक्स) को शामिल करने के लिए तंत्र।


उपयोग का उदाहरण

पुस्तकों के प्रबंधन के लिए GraphQL सर्वर बनाने का एक सरल उदाहरण देखें।



1. SDL के माध्यम से स्कीमा परिभाषित करना

// schema.graphqlstype Query {    books: [Book]    bookById(id: ID!): Book}

type Book { id: ID! title: String! author: String! year: Int}


2. रिज़ॉल्वर बनाना

import graphql.schema.DataFetcher;import graphql.schema.DataFetchingEnvironment;

public class BookDataFetcher {

public static DataFetcher<List<Book>> getBooksDataFetcher() { return environment -> { // वास्तविक एप्लिकेशन में यहाँ डेटाबेस क्वेरी होगी return List.of( new Book("1", "1984", "George Orwell", 1949), new Book("2", "Brave New World", "Aldous Huxley", 1932) ); }; }

public static DataFetcher<Book> getBookByIdDataFetcher() { return environment -> { String id = environment.getArgument("id"); // ID द्वारा पुस्तक खोजें return findBookById(id); }; }}


3. स्कीमा संयोजन और अनुरोध निष्पादन

import graphql.GraphQL;import graphql.schema.GraphQLSchema;import graphql.schema.idl.RuntimeWiring;import graphql.schema.idl.SchemaParser;import graphql.schema.idl.SchemaGenerator;import graphql.schema.idl.TypeDefinitionRegistry;

public class GraphQLExample { public static void main(String[] args) { // SDL लोड करना String schema = "type Query { books: [Book] } type Book { id: ID! title: String! }"; SchemaParser schemaParser = new SchemaParser(); TypeDefinitionRegistry typeRegistry = schemaParser.parse(schema);

// Runtime wiring कॉन्फ़िगर करना RuntimeWiring wiring = RuntimeWiring.newRuntimeWiring() .type("Query", builder -> builder .dataFetcher("books", BookDataFetcher.getBooksDataFetche

अनुशंसाएँ