GraphQL और PHP का परिचय
\nGraphQL API के लिए एक क्वेरी भाषा और मौजूदा डेटा के साथ इन क्वेरी को निष्पादित करने के लिए एक रनटाइम वातावरण है। REST के विपरीत, जहां आपको प्रतिक्रिया की एक निश्चित संरचना मिलती है, GraphQL क्लाइंट को केवल उन डेटा का अनुरोध करने की अनुमति देता है जिनकी उसे वास्तव में आवश्यकता होती है। यह API को अधिक लचीला और कुशल बनाता है।
\nइस ट्यूटोरियल में, हम शुरुआत से PHP पर एक सरल GraphQL API बनाएंगे। आप सीखेंगे कि आवश्यक लाइब्रेरी कैसे स्थापित करें, स्कीमा को परिभाषित करें, रिज़ॉल्वर लिखें और क्वेरी को संसाधित करें। यह लेख शुरुआती डेवलपर्स के लिए है जो PHP और डेटाबेस (जैसे, MySQL या SQLite) की मूल बातों से परिचित हैं।
\nहम webonyx/graphql-php लाइब्रेरी का उपयोग करेंगे - यह PHP पर GraphQL को लागू करने के लिए सबसे लोकप्रिय और स्थिर पैकेज है। अंत में, आप अपना स्वयं का GraphQL सर्वर चला सकेंगे और किसी भी HTTP क्लाइंट (जैसे, cURL या Insomnia) के माध्यम से उस पर क्वेरी निष्पादित कर सकेंगे।
प्रोजेक्ट की स्थापना और कॉन्फ़िगरेशन
\nचरण 1: प्रोजेक्ट बनाना और निर्भरताएँ स्थापित करना
\nशुरू करने के लिए, प्रोजेक्ट के लिए एक नई निर्देशिका बनाएं और Composer को आरंभ करें:
\nmkdir graphql-php-tutorial\ncd graphql-php-tutorial\ncomposer init\nफिर webonyx/graphql-php लाइब्रेरी स्थापित करें:
composer require webonyx/graphql-php\nहमें एक PSR-7 संगत HTTP सर्वर की भी आवश्यकता होगी। सरलता के लिए, हम अंतर्निहित PHP सर्वर और अनुरोधों और प्रतिक्रियाओं के साथ काम करने के लिए guzzlehttp/psr7 लाइब्रेरी का उपयोग करेंगे:
composer require guzzlehttp/psr7\n\nचरण 2: प्रोजेक्ट संरचना
\nनिम्नलिखित फ़ाइल संरचना बनाएँ:
\n- \n
index.php— एप्लिकेशन का प्रवेश बिंदु \n schema.graphql— GraphQL स्कीमा परिभाषा वाली फ़ाइल \n resolvers.php— रिज़ॉल्वर फ़ंक्शन वाली फ़ाइल \n data.php— डेटाबेस का अनुकरण (डेटा के साथ सरणी) \n
GraphQL स्कीमा को परिभाषित करना
\nचरण 3: स्कीमा लिखना
\nस्कीमा डेटा प्रकारों और उपलब्ध संचालन (क्वेरी और म्यूटेशन) का विवरण है। आइए पुस्तकों की सूची प्रबंधित करने के लिए एक सरल स्कीमा बनाएं। schema.graphql फ़ाइल खोलें और निम्नलिखित कोड डालें:
type Book {\n id: ID!\n title: String!\n author: String!\n year: Int\n}\n\ntype Query {\n books: [Book]\n book(id: ID!): Book\n}\n\ntype Mutation {\n addBook(title: String!, author: String!, year: Int): Book\n deleteBook(id: ID!): Book\n}\nयहाँ हमने परिभाषित किया है:
\n- \n
- Book — id, title, author और year फ़ील्ड वाला डेटा प्रकार। \n
- Query — डेटा प्राप्त करने के लिए संचालन: सभी पुस्तकों की सूची और ID द्वारा पुस्तक। \n
- Mutation — डेटा बदलने के लिए संचालन: पुस्तक जोड़ना और हटाना। \n
चरण 4: डेटा और रिज़ॉल्वर तैयार करना
\nपुस्तकों की सरणी के साथ data.php फ़ाइल बनाएं:
<?php\n$books = [\n 1 => ['id' => 1, 'title' => 'युद्ध और शांति', 'author' => 'लियो टॉल्स्टॉय', 'year' => 1869],\n 2 => ['id' => 2, 'title' => 'अपराध और दंड', 'author' => 'फ्योदोर दोस्तोयेव्स्की', 'year' => 1866],\n];\nअब resolvers.php फ़ाइल में रिज़ॉल्वर लिखें। रिज़ॉल्वर ऐसे फ़ंक्शन हैं जो स्कीमा के प्रत्येक फ़ील्ड के लिए डेटा लौटाते हैं।
<?php\nrequire 'data.php';\n\nfunction resolveBooks() {\n global $books;\n return array_values($books);\n}\n\nfunction resolveBook($root, $args) {\n global $books;\n return $books[$args['id']] ?? null;\n}\n\nfunction resolveAddBook($root, $args) {\n global $books;\n $newId = count($books) + 1;\n $newBook = [\n 'id' => $newId,\n 'title' => $args['title'],\n 'author' => $args['author'],\n 'year' => $args['year'] ?? null\n ];\n $books[$newId] = $newBook;\n return $newBook;\n}\n\nfunction resolveDeleteBook($root, $args) {\n global $books;\n