Spring Boot के साथ GraphQL APIs · पाठ

इंटरफ़ेस और यूनियन प्रकार लागू करना

लचीले और बहुरूपी स्कीमा डिज़ाइन बनाने के लिए इंटरफ़ेस और यूनियन प्रकारों का उपयोग करें।

पाठ 2, कुल 4 में से11 चरण

इंटरफ़ेस और यूनियन प्रकार लागू करना, CoddyKit पर Spring Boot के साथ GraphQL APIs का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Spring Boot के साथ GraphQL APIs सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Spring Boot के साथ GraphQL APIs पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

बहुरूपता के साथ लचीली स्कीमा

GraphQL आपको अत्यंत लचीले API डिज़ाइन करने की सुविधा देता है। कभी-कभी आपको ऐसे फ़ील्ड की आवश्यकता होती है जो विभिन्न प्रकार के ऑब्जेक्ट लौटा सके, या आप ऐसे साझा फ़ील्ड समूह को परिभाषित करना चाहते हैं जिसे कई प्रकारों को लागू करना हो। यहीं बहुरूपता उपयोगी होती है।

इसे प्राप्त करने की दो महत्वपूर्ण अवधारणाओं का हम अध्ययन करेंगे: इंटरफ़ेस और यूनियन प्रकार।

GraphQL इंटरफ़ेस को समझना

मान लीजिए कि आपके पास अलग-अलग प्रकार के मीडिया हैं, जैसे Book और Movie। दोनों में title और releaseYear हो सकते हैं। इन फ़ील्ड को दोहराने के बजाय, आप एक इंटरफ़ेस परिभाषित कर सकते हैं।

इंटरफ़ेस एक अनुबंध होता है, जो उन फ़ील्ड के समूह को निर्दिष्ट करता है जिन्हें इसे लागू करने वाले प्रत्येक प्रकार में शामिल करना आवश्यक होता है। इसे सामान्य कार्यक्षमता के खाके की तरह समझें।

SDL में इंटरफ़ेस परिभाषित करना

GraphQL की Schema Definition Language (SDL) में इंटरफ़ेस को interface कीवर्ड का उपयोग करके परिभाषित किया जाता है। यहाँ हम एक Media इंटरफ़ेस परिभाषित कर रहे हैं, जिसे Book और Movie दोनों साझा करेंगे।

interface Media {
  id: ID!
  title: String!
  releaseYear: Int
}

इंटरफ़ेस लागू करने वाले प्रकार

अब हम अपने Book और Movie प्रकारों में Media इंटरफ़ेस लागू करते हैं। इनमें Media द्वारा परिभाषित सभी फ़ील्ड शामिल होने चाहिए और ये अपने अलग फ़ील्ड भी जोड़ सकते हैं। implements कीवर्ड पर ध्यान दें।

type Book implements Media {
  id: ID!
  title: String!
  releaseYear: Int
  author: String
  pages: Int
}

type Movie implements Media {
  id: ID!
  title: String!
  releaseYear: Int
  director: String
  durationMinutes: Int
}

इंटरफ़ेस के लिए रिज़ॉल्वर

जब आप किसी ऐसे फ़ील्ड की क्वेरी करते हैं जो इंटरफ़ेस प्रकार लौटाता है, तो Spring GraphQL डेटा के आधार पर ठोस प्रकार का स्वतः निर्धारण करता है। आम तौर पर आप ऐसा Java डेटा वर्ग बनाते हैं जो किसी सामान्य Java इंटरफ़ेस को लागू करता है और बाकी काम Spring GraphQL संभालता है। इस उदाहरण को चलाकर देखें:

package com.coddykit.graphql;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.graphql.data.method.annotation.QueryMapping;
import org.springframework.stereotype.Controller;

import java.util.List;
import java.util.ArrayList;

@SpringBootApplication
public class GraphqlApp {
    public static void main(String[] args) {
        SpringApplication.run(GraphqlApp.class, args);
    }
}

interface Media {
    String getId();
    String getTitle();
    Integer getReleaseYear();
}

record Book(String id, String title, Integer releaseYear, String author, Integer pages) implements Media {}
record Movie(String id, String title, Integer releaseYear, String director, Integer durationMinutes) implements Media {}

@Controller
class MediaController {

    @QueryMapping
    public List<Media> allMedia() {
        List<Media> mediaList = new ArrayList<>();
        mediaList.add(new Book("b1", "The Hitchhiker's Guide", 1979, "Douglas Adams", 193));
        mediaList.add(new Movie("m1", "Inception", 2010, "Christopher Nolan", 148));
        return mediaList;
    }
}

GraphQL यूनियन प्रकारों को समझना

जहाँ इंटरफ़ेस यह सुनिश्चित करते हैं कि प्रकारों में सामान्य फ़ील्ड हों, वहीं यूनियन प्रकार किसी फ़ील्ड को कई अलग-अलग प्रकारों में से कोई एक लौटाने की अनुमति देते हैं, बिना यह आवश्यक किए कि उनमें कोई सामान्य फ़ील्ड हो। इसे 'या तो-या' स्थिति की तरह समझें। उदाहरण के लिए, खोज परिणाम Product या User हो सकता है।

यूनियन के लिए स्कीमा परिभाषा

SDL में यूनियन प्रकारों को union कीवर्ड के बाद उन प्रकारों के नाम लिखकर परिभाषित किया जाता है जिन्हें वह दर्शा सकता है। प्रकारों को वर्टिकल बार | से अलग किया जाता है। यहाँ एक SearchResult यूनियन है, जो Book या Movie हो सकता है।

union SearchResult = Book | Movie

यूनियन प्रकारों के लिए रिज़ॉल्वर

जब कोई फ़ील्ड यूनियन प्रकार लौटाता है, तो Spring GraphQL को यह जानना आवश्यक होता है कि वह कौन-सा ठोस प्रकार है। Java में आप यूनियन में परिभाषित प्रकारों में से किसी एक का इंस्टेंस लौटाते हैं। क्लाइंट को अंतर पहचानने में सहायता देने के लिए Spring GraphQL __typename फ़ील्ड स्वतः जोड़ता है। इस उदाहरण को चलाकर देखें:

package com.coddykit.graphql;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.graphql.data.method.annotation.Argument;
import org.springframework.graphql.data.method.annotation.QueryMapping;
import org.springframework.stereotype.Controller;

@SpringBootApplication
public class GraphqlApp {
    public static void main(String[] args) {
        SpringApplication.run(GraphqlApp.class, args);
    }
}

record Book(String id, String title, Integer releaseYear, String author, Integer pages) {}
record Movie(String id, String title, Integer releaseYear, String director, Integer durationMinutes) {}

@Controller
class SearchController {

    @QueryMapping
    public Object search(@Argument String query) {
        if (query.equalsIgnoreCase("inception")) {
            return new Movie("m1", "Inception", 2010, "Christopher Nolan", 148);
        } else if (query.equalsIgnoreCase("hitchhiker")) {
            return new Book("b1", "The Hitchhiker's Guide", 1979, "Douglas Adams", 193);
        }
        return null;
    }
}

इंटरफ़ेस और यूनियन में से चुनना

इंटरफ़ेस और यूनियन दोनों बहुरूपता प्रदान करते हैं, लेकिन इनके उद्देश्य अलग-अलग होते हैं:

  • इंटरफ़ेस: इनका उपयोग तब करें जब कई प्रकारों में फ़ील्ड और व्यवहार का एक सामान्य समूह हो। ये एक अनुबंध लागू करते हैं।
  • यूनियन प्रकार: इनका उपयोग तब करें जब कोई फ़ील्ड ऐसे कई अलग-अलग प्रकारों में से कोई एक लौटा सकता हो जिनमें आवश्यक नहीं कि कोई सामान्य फ़ील्ड हो। इसका अर्थ 'A या B या C में से कोई एक' है।

इंटरफ़ेस बनाम यूनियन प्रश्नोत्तरी

आप एक GraphQL API डिज़ाइन कर रहे हैं। आपको ऐसे फ़ील्ड की आवश्यकता है जो Photo ऑब्जेक्ट या Video ऑब्जेक्ट लौटा सके। इन दोनों प्रकारों के फ़ील्ड पूरी तरह अलग हैं और इनमें कोई सामान्य गुण नहीं है। इस स्थिति के लिए GraphQL की कौन-सी स्कीमा सुविधा सबसे उपयुक्त है?

पुनरावलोकन: लचीली स्कीमा

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

अगले भाग में आप म्यूटेशन आर्ग्युमेंट को सुव्यवस्थित करने के लिए इनपुट प्रकार सीखेंगे।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Spring Boot के साथ GraphQL APIs सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
48

अक्सर पूछे जाने वाले प्रश्न

क्या “इंटरफ़ेस और यूनियन प्रकार लागू करना” पाठ निःशुल्क है?

हाँ—“इंटरफ़ेस और यूनियन प्रकार लागू करना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Spring Boot के साथ GraphQL APIs पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Spring Boot के साथ GraphQL APIs पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“इंटरफ़ेस और यूनियन प्रकार लागू करना” में मैं क्या सीखूँगा?

लचीले और बहुरूपी स्कीमा डिज़ाइन बनाने के लिए इंटरफ़ेस और यूनियन प्रकारों का उपयोग करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Spring Boot के साथ GraphQL APIs का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Spring Boot के साथ GraphQL APIs शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Spring Boot के साथ GraphQL APIs शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“इंटरफ़ेस और यूनियन प्रकार लागू करना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Spring Boot के साथ GraphQL APIs पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Spring Boot के साथ GraphQL APIs पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. नेस्टेड ऑब्जेक्ट और संबंधों का मॉडल बनाना
  2. इंटरफ़ेस और यूनियन प्रकार लागू करना
  3. म्यूटेशन के लिए इनपुट प्रकारों का उपयोग
  4. एनम और कस्टम स्केलर प्रकार
← Spring Boot के साथ GraphQL APIs पर वापस जाएँ