PHP के साथ GraphQL API: चरण-दर-चरण ट्यूटोरियल

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: क्यों GraphQL और PHP एक बेहतरीन जोड़ी हैं

वेब डेवलपमेंट की दुनिया में, REST API लंबे समय से डी-फैक्टो मानक रहा है। हालांकि, एप्लिकेशन की जटिलता बढ़ने और मोबाइल क्लाइंट के आगमन के साथ, REST की कमियाँ स्पष्ट हो गईं: डेटा की अधिकता या कमी, कई एंडपॉइंट, जटिल वर्जनिंग। Facebook द्वारा विकसित GraphQL, इन समस्याओं को हल करता है, जिससे क्लाइंट केवल उन डेटा का अनुरोध कर सकता है जिनकी उसे आवश्यकता है, और उन्हें एक ही अनुरोध में प्राप्त कर सकता है।

PHP, अपने 'पुराने स्कूल' होने के बावजूद, सर्वर-साइड लॉजिक बनाने के लिए एक शक्तिशाली भाषा बनी हुई है। webonyx/graphql-php जैसी आधुनिक लाइब्रेरीज़ की बदौलत, PHP पर GraphQL API को लागू करना सरल और कुशल हो गया है। इस ट्यूटोरियल में, हम चरण दर चरण एक पूर्ण GraphQL सर्वर बनाएंगे जो क्वेरी, म्यूटेशन को संसाधित कर सकेगा और डेटाबेस के साथ काम कर सकेगा।

हम PHP 8.0+, निर्भरता प्रबंधन के लिए Composer और स्थानीय परीक्षण के लिए PHP के अंतर्निहित सर्वर का उपयोग करेंगे। लेख के अंत तक, आप अपना स्वयं का API तैनात कर सकेंगे और इसे किसी भी फ्रंटएंड के साथ एकीकृत कर सकेंगे।



1. पर्यावरण की स्थापना और कॉन्फ़िगरेशन

कोड लिखने से पहले, प्रोजेक्ट तैयार करना आवश्यक है। सुनिश्चित करें कि आपके पास PHP 8.0+ और Composer स्थापित हैं। प्रोजेक्ट के लिए एक नया फ़ोल्डर बनाएं और उसमें जाएं:

mkdir graphql-php-tutorialcd graphql-php-tutorial

अब Composer का उपयोग करके मुख्य लाइब्रेरी webonyx/graphql-php स्थापित करें:

composer require webonyx/graphql-php

डेटाबेस के साथ काम करने के लिए हम PDO का उपयोग करेंगे, जो PHP में अंतर्निहित है। इसके अतिरिक्त, क्वेरी को आसानी से पार्स करने के लिए एक लाइब्रेरी स्थापित करें:

composer require graphql-php/graphql-php

एक फ़ाइल index.php बनाएं - यह हमारे एप्लिकेशन का प्रवेश बिंदु होगा। Composer ऑटोलोड और मूल संरचना सेट करें:

<?phprequire_once __DIR__ . '/vendor/autoload.php';

use GraphQL\\GraphQL;use GraphQL\\Type\\Schema;use GraphQL\\Type\\Definition\\ObjectType;use GraphQL\\Type\\Definition\\Type;

// यहाँ हमारा लॉजिक होगा

साथ ही, स्कीमा को टेक्स्ट फॉर्मेट में संग्रहीत करने के लिए एक फ़ाइल schema.graphql बनाएं (वैकल्पिक, लेकिन बड़े प्रोजेक्ट के लिए सुविधाजनक)।



2. स्कीमा और डेटा प्रकारों की परिभाषा

किसी भी GraphQL API का हृदय स्कीमा है। यह बताता है कि कौन सा डेटा उपलब्ध है और उस तक कैसे पहुँचा जाए। हमारे उदाहरण में, हम एक सरल उपयोगकर्ता (User) और पोस्ट (Post) मॉडल बनाएंगे।

प्रकारों को परिभाषित करके शुरू करें। फ़ाइल index.php में निम्नलिखित क्लासेस जोड़ें:

// User प्रकार$userType = new ObjectType([    'name' => 'User',    'fields' => [        'id' => Type::int(),        'name' => Type::string(),        'email' => Type::string(),        'posts' => [            'type' => Type::listOf($postType),            'resolve' => function ($user) use ($db) {                // उपयोगकर्ता के पोस्ट लोड करने के लिए रिज़ॉल्वर फ़ंक्शन                $stmt = $db->prepare('SELECT * FROM posts WHERE user_id = :id');                $stmt->execute([':id' => $user['id']]);                return $stmt->fetchAll(PDO::FETCH_ASSOC);            }        ]    ]]);

// Post प्रकार$postType = new ObjectType([ 'name' => 'Post', 'fields' => [ 'id' => Type::int(), 'title' => Type::string(), 'content' => Type::string(), 'author' => [ 'type' => $userType, 'resolve' => function ($post) use ($db) { $stmt = $db->prepare('SELECT * FROM users WHERE id = :id'); $stmt->execute([':id' => $post['user_id']]); return $stmt->fetch(PDO::FETCH_ASSOC); } ] ]]);

रिज़ॉल्वर पर ध्यान दें - ये फ़ंक्शन हैं जो यह निर्धारित करते हैं कि प्रत्येक फ़ील्ड के लिए डेटा कैसे प्राप्त किया जाए। उपरोक्त उदाहरण में, हम डेटाबेस क्वेरी के लिए PDO का उपयोग कर रहे हैं।

अब बनाएं

ब्लॉग

पुस्तक अनुशंसाएँ