Java पर GraphQL API का परिचय
GraphQL API के लिए एक आधुनिक क्वेरी भाषा है जो क्लाइंट को केवल वही डेटा मांगने की अनुमति देती है जिसकी उन्हें वास्तव में आवश्यकता होती है। REST के विपरीत, जहां प्रतिक्रिया संरचना निश्चित होती है, GraphQL लचीलापन और दक्षता प्रदान करता है। इस चरण-दर-चरण ट्यूटोरियल में, हम लोकप्रिय लाइब्रेरी graphql-java और Spring Boot का उपयोग करके Java पर एक पूर्ण GraphQL API बनाएंगे। आप सर्वर सेट करना, स्कीमा परिभाषित करना, रिज़ॉल्वर लिखना और क्वेरी निष्पादित करना सीखेंगे। सभी कोड उदाहरण चलाने के लिए तैयार हैं।
आप क्या सीखेंगे
- GraphQL के लिए Spring Boot प्रोजेक्ट कैसे सेट करें
- GraphQL स्कीमा कैसे परिभाषित करें (प्रकार, क्वेरी, म्यूटेशन)
- Java में रिज़ॉल्वर कैसे लिखें
- query और mutation क्वेरी कैसे निष्पादित करें
1. प्रोजेक्ट और निर्भरताएँ सेट करना
शुरू करने के लिए, हम Maven के साथ एक Spring Boot प्रोजेक्ट बनाएंगे। pom.xml में आवश्यक निर्भरताएँ जोड़ें:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.graphql-java</groupId> <artifactId>graphql-spring-boot-starter</artifactId> <version>5.0.2</version> </dependency> <dependency> <groupId>com.graphql-java</groupId> <artifactId>graphql-java-tools</artifactId> <version>5.2.4</version> </dependency></dependencies>ये लाइब्रेरीज़ GraphQL को Spring Boot के साथ एकीकृत करती हैं और स्कीमा के साथ सुविधाजनक कार्य प्रदान करती हैं। निर्भरताएँ जोड़ने के बाद प्रोजेक्ट को अपडेट करें।
प्रोजेक्ट संरचना
हमारे प्रोजेक्ट में निम्नलिखित मुख्य घटक होंगे:
- GraphQL स्कीमा (फ़ाइल
schema.graphqls) - डेटा मॉडल (Java POJO)
- रिज़ॉल्वर (क्वेरी हैंडलर)
- परीक्षण के लिए कंट्रोलर
2. GraphQL स्कीमा परिभाषित करना
फ़ाइल src/main/resources/schema.graphqls बनाएँ। इसमें हम डेटा प्रकार और उपलब्ध संचालन का वर्णन करेंगे। उदाहरण के लिए, "पुस्तक" मॉडल लें:
type Book { id: ID! title: String! author: String! year: Int}
type Query { getBook(id: ID!): Book getAllBooks: [Book]}
type Mutation { addBook(title: String!, author: String!, year: Int): Book}यहाँ Book अनिवार्य फ़ील्ड (!) वाला एक ऑब्जेक्ट प्रकार है। Query डेटा पढ़ने के लिए प्रवेश बिंदु परिभाषित करता है, और Mutation संशोधन के लिए। ध्यान दें: GraphQL में म्यूटेशन का उपयोग डेटा बनाने, अपडेट करने और हटाने के लिए किया जाता है।
3. Java मॉडल और रिज़ॉल्वर बनाना
Book मॉडल
एक सरल POJO क्लास Book.java बनाएँ:
public class Book { private String id; private String title; private String author; private int year;
public Book(String id, String title, String author, int year) { this.id = id; this.title = title; this.author = author; this.year = year; }
// गेटर और सेटर public String getId() { return id; } public String getTitle() { return title; } public String getAuthor() { return author; } public int getYear() { return year; }}Query के लिए रिज़ॉल्वर
रिज़ॉल्वर स्कीमा को डेटा से जोड़ते हैं। क्लास QueryResolver.java बनाएँ:
import com.coxautodev.graphql.tools.GraphQLQueryResolver;import org.springframework.stereotype.Component;import java.util.*;
@Componentpublic class QueryResolver implements GraphQLQueryResolver {
private final List<Book