Java पर GraphQL API का परिचय
\n\nGraphQL API के लिए एक क्वेरी भाषा है, जो क्लाइंट को केवल वही डेटा माँगने की सुविधा देती है जिसकी उन्हें वास्तव में आवश्यकता होती है। REST के विपरीत, जहाँ प्रतिक्रिया की संरचना निश्चित होती है, GraphQL प्रतिक्रियाओं को लचीले ढंग से तैयार करने की अनुमति देता है, जिससे स्थानांतरित डेटा की मात्रा में काफी कमी आती है और विकास में तेजी आती है।
\n\nइस ट्यूटोरियल में, हम व्यावहारिक रूप से समझेंगे कि graphql-java लाइब्रेरी और Spring Boot फ्रेमवर्क का उपयोग करके Java के साथ GraphQL API कैसे बनाया जाए। आप सीखेंगे कि स्कीमा कैसे सेट करें, रिज़ॉल्वर कैसे लिखें और क्वेरी कैसे निष्पादित करें।
यह लेख Java डेवलपर्स के लिए उपयोगी होगा जो API बनाने के आधुनिक दृष्टिकोण में महारत हासिल करना चाहते हैं और क्लाइंट और सर्वर के बीच बातचीत में सुधार करना चाहते हैं।
\n\n1. प्रोजेक्ट और निर्भरताएँ सेट करना
\n\nशुरू करने के लिए, हम एक नया Spring Boot प्रोजेक्ट बनाएंगे। Spring Initializr का उपयोग करना सबसे सुविधाजनक है। निम्नलिखित निर्भरताएँ जोड़ें:
\n\n- \n
- Spring Web — वेब सर्वर चलाने के लिए \n
- Spring Boot DevTools — विकास में तेजी लाने के लिए \n
- Lombok — बॉयलरप्लेट कोड को कम करने के लिए \n
प्रोजेक्ट बनाने के बाद, pom.xml में मुख्य GraphQL लाइब्रेरी जोड़ें:
<dependency>\n <groupId>com.graphql-java</groupId>\n <artifactId>graphql-java-spring-boot-starter-webmvc</artifactId>\n <version>2021-06-30T00-00-00-1e4b5e5</version>\n</dependency>\n\nGraphiQL टूल (क्वेरी परीक्षण के लिए वेब इंटरफ़ेस) के साथ काम करने के लिए एक लाइब्रेरी की भी आवश्यकता होगी:
\n\n<dependency>\n <groupId>com.graphql-java</groupId>\n <artifactId>graphiql-spring-boot-starter</artifactId>\n <version>5.0.2</version>\n</dependency>\n\nनिर्भरताएँ जोड़ने के बाद, प्रोजेक्ट को अपडेट करें और इसे चलाएँ। डिफ़ॉल्ट रूप से, GraphiQL http://localhost:8080/graphiql पते पर उपलब्ध होगा।
2. डेटा मॉडल और GraphQL स्कीमा बनाना
\n\nप्रदर्शन के लिए, हम एक सरल Book (पुस्तक) मॉडल बनाएंगे। id, title, author और pages फ़ील्ड वाला एक क्लास परिभाषित करें।
import lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class Book {\n private String id;\n private String title;\n private String author;\n private int pages;\n}\n\nअब GraphQL स्कीमा को परिभाषित करना आवश्यक है। src/main/resources फ़ोल्डर में schema.graphqls फ़ाइल बनाएँ:
type Query {\n allBooks: [Book]\n bookById(id: String): Book\n}\n\ntype Book {\n id: String\n title: String\n author: String\n pages: Int\n}\n\nस्कीमा दो क्वेरी का वर्णन करती है: सभी पुस्तकें प्राप्त करना और आईडी द्वारा पुस्तक प्राप्त करना। Book प्रकार में चार फ़ील्ड हैं।
\n\nक्वेरी को संसाधित करने के लिए, हम एक सेवा बनाएंगे जो डेटा को मेमोरी में संग्रहीत करेगी (सरलता के लिए):
\n\nimport org.springframework.stereotype.Service;\nimport javax.annotation.PostConstruct;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Optional;\n\n@Service\npublic class BookService {\n private List<Book> books = new ArrayList<>();\n\n @PostConstruct\n public void init() {\n books.add(new Book("1", "वॉर एंड पीस", "लियो टॉल्स्टॉय", 1225));\n books.add(new Book("2", "क्राइम एंड पनिशमेंट", "फ्योडोर दोस्तोयेव्स्की", 671));\n books.add(new Book("3", "द मास्टर एंड मार्गरीटा", "मिखाइल बुल्गाकोव", 480));\n }\n\n public List<Book> getAllBooks() {\n return books;\n }\n\n public Book getBookById(String id) {\n Optional<Boo