PHP के साथ GraphQL API: चरण-दर-चरण व्यावहारिक ट्यूटोरियल
GraphQL — API के लिए एक क्वेरी भाषा है, जो क्लाइंट को केवल वही डेटा प्राप्त करने की अनुमति देती है जिसकी उन्हें वास्तव में आवश्यकता होती है। REST के विपरीत, जहाँ प्रत्येक एंडपॉइंट एक निश्चित संरचना लौटाता है, GraphQL लचीलापन और दक्षता प्रदान करता है। इस ट्यूटोरियल में हम PHP पर एक पूर्ण GraphQL API को शुरू से बनाएंगे — लाइब्रेरीज़ की स्थापना से लेकर क्वेरीज़ और म्यूटेशन को संसाधित करने तक।
GraphQL और PHP एक बेहतरीन जोड़ी क्यों हैं?
PHP सर्वर-साइड डेवलपमेंट के लिए सबसे लोकप्रिय भाषाओं में से एक बना हुआ है। webonyx/graphql-php लाइब्रेरी की मदद से आप किसी भी प्रोजेक्ट में GraphQL को आसानी से एकीकृत कर सकते हैं — एक साधारण ब्लॉग से लेकर जटिल CRM तक। मुख्य लाभ:
- क्वेरीज़ में लचीलापन — क्लाइंट स्वयं तय करता है कि कौन से फ़ील्ड प्राप्त करने हैं।
- एकल प्रवेश बिंदु — कई एंडपॉइंट के बजाय एक
/graphql। - सख्त टाइपिंग — स्कीमा सभी प्रकारों और संबंधों को परिभाषित करती है।
- फ्रंटएंड के लिए सुविधा — React, Vue और अन्य फ्रेमवर्क GraphQL के साथ आसानी से काम करते हैं।
PHP पर GraphQL API का चरण-दर-चरण कार्यान्वयन
1. वातावरण की स्थापना और कॉन्फ़िगरेशन
शुरू करने के लिए, एक नया प्रोजेक्ट बनाएं और Composer के माध्यम से मुख्य लाइब्रेरी स्थापित करें:
composer require webonyx/graphql-phpहमें एक PSR-7 संगत HTTP हैंडलर की भी आवश्यकता होगी। हम guzzlehttp/psr7 और nyholm/psr7-server का उपयोग करेंगे:
composer require guzzlehttp/psr7 nyholm/psr7-serverएक बुनियादी फ़ोल्डर संरचना बनाएं:
project/├── src/│ ├── Schema/│ ├── Resolvers/│ └── Types/├── public/│ └── index.php├── vendor/└── composer.json2. GraphQL स्कीमा की परिभाषा
स्कीमा GraphQL API का हृदय है। यह डेटा प्रकारों और उपलब्ध संचालनों का वर्णन करती है। फ़ाइल src/Schema/Schema.php बनाएं:
<?phpnamespace App\\Schema;
use GraphQL\\Type\\Definition\\ObjectType;use GraphQL\\Type\\Definition\\Type;use GraphQL\\Type\\Schema as GraphQLSchema;
class Schema{ public static function build(): GraphQLSchema { // "User" प्रकार $userType = new ObjectType([ 'name' => 'User', 'fields' => [ 'id' => Type::int(), 'name' => Type::string(), 'email' => Type::string(), ] ]);
// "Query" प्रकार — मूल क्वेरी $queryType = new ObjectType([ 'name' => 'Query', 'fields' => [ 'user' => [ 'type' => $userType, 'args' => [ 'id' => Type::nonNull(Type::int()) ], 'resolve' => function ($root, $args) { // यहाँ रिज़ॉल्वर होगा return UserResolver::getUser($args['id']); } ], 'users' => [ 'type' => Type::listOf($userType), 'resolve' => function () { return UserResolver::getAllUsers(); } ] ] ]);
// "Mutation" प्रकार — मूल म्यूटेशन $mutationType = new ObjectType([ 'name' => 'Mutation', 'fields' => [ 'createUser' => [ 'type' => $userType, 'args' => [ 'name' => Type::nonNull(Type::string()), 'email' => Type::nonNull(Type::string()) ], 'resolve' => function ($root, $args) { return UserResolver::createUser($args['name'], $args['email']); } ] ] ]);
return new GraphQLSchema([