GraphQL और Graphene का परिचय
GraphQL एक आधुनिक API क्वेरी भाषा और रनटाइम एनवायरनमेंट है, जिसे Facebook ने 2012 में पारंपरिक REST API की समस्याओं को हल करने के लिए विकसित किया था। Graphene एक शक्तिशाली Python लाइब्रेरी है जो टाइप की गई स्कीमा, म्यूटेशन और लोकप्रिय ORM सिस्टम के साथ इंटीग्रेशन के साथ GraphQL स्पेसिफिकेशन का पूर्ण कार्यान्वयन प्रदान करती है।
GraphQL क्या है और इसकी आवश्यकता क्यों है
GraphQL डेटा प्राप्त करने का एक डिक्लेरेटिव तरीका है, जहां क्लाइंट सटीक रूप से बताता है कि उसे कौन सा डेटा चाहिए। REST के विपरीत, जहां सर्वर रिस्पॉन्स की संरचना तय करता है, GraphQL क्लाइंट को स्वयं क्वेरी बनाने और केवल आवश्यक डेटा प्राप्त करने की अनुमति देता है।
REST की तुलना में GraphQL के मुख्य लाभ
एकल एंट्री पॉइंट
GraphQL सभी ऑपरेशनों के लिए एक ही URL एंडपॉइंट का उपयोग करता है, जो API आर्किटेक्चर को सरल बनाता है और URL के माध्यम से वर्जनिंग की आवश्यकता को समाप्त करता है।
क्वेरी में लचीलापन
क्लाइंट स्वयं रिस्पॉन्स की संरचना तय करता है, केवल आवश्यक फील्ड और संबंधित डेटा का अनुरोध करता है।
डेटा रिडंडेंसी का उन्मूलन
over-fetching (अनावश्यक डेटा प्राप्त करना) और under-fetching (अपर्याप्त डेटा) की समस्याएं क्वेरी स्तर पर हल हो जाती हैं।
संबंधित डेटा का संयोजन
एक ही क्वेरी में कई संबंधित संस्थाओं से डेटा प्राप्त करने की क्षमता, जो सर्वर कॉल की संख्या को कम करती है।
सख्त टाइपिंग
GraphQL स्कीमा स्टैटिकली टाइप की जाती है, जो क्वेरी वैलिडेशन और IDE में ऑटो-कम्प्लीशन सुनिश्चित करती है।
स्वचालित दस्तावेज़ीकरण
स्कीमा इंट्रोस्पेक्शन के माध्यम से उपलब्ध API की लाइव डॉक्यूमेंटेशन के रूप में कार्य करती है।
Graphene की स्थापना और कॉन्फ़िगरेशन
बेसिक इंस्टॉलेशन
pip install graphene
वेब फ्रेमवर्क के साथ इंटीग्रेशन
Flask के लिए:
pip install flask-graphql
Django के लिए:
pip install graphene-django
FastAPI के लिए:
pip install starlette-graphene3
डेटाबेस के साथ इंटीग्रेशन
SQLAlchemy के लिए:
pip install graphene-sqlalchemy
Django ORM के लिए:
pip install graphene-django
बेसिक GraphQL सर्वर बनाना
Flask के साथ उदाहरण
from flask import Flask
from flask_graphql import GraphQLView
import graphene
app = Flask(__name__)
class Query(graphene.ObjectType):
hello = graphene.String(name=graphene.String(default_value="दुनिया"))
def resolve_hello(self, info, name):
return f"नमस्ते, {name}!"
schema = graphene.Schema(query=Query)
app.add_url_rule('/graphql', view_func=GraphQLView.as_view(
'graphql',
schema=schema,
graphiql=True # GraphiQL इंटरफ़ेस चालू करता है
))
if __name__ == '__main__':
app.run(debug=True)
Django के साथ उदाहरण
# settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'graphene_django',
'myapp',
]
GRAPHENE = {
'SCHEMA': 'myproject.schema.schema'
}
# urls.py
from django.urls import path
from graphene_django.views import GraphQLView
urlpatterns = [
path('graphql/', GraphQLView.as_view(graphiql=True)),
]
Graphene में टाइप और स्कीमा को परिभाषित करना
कस्टम टाइप बनाना
import graphene
class User(graphene.ObjectType):
id = graphene.ID()
name = graphene.String()
email = graphene.String()
age = graphene.Int()
is_active = graphene.Boolean()
# कम्प्यूटेड फील्ड
full_name = graphene.String()
def resolve_full_name(self, info):
return f"{self.first_name} {self.last_name}"
class Post(g