PHP GraphQL लाइब्रेरी: webonyx/graphql-php
\n\nआधुनिक वेब डेवलपमेंट में लचीले और कुशल API की आवश्यकता बढ़ती जा रही है। पारंपरिक REST सेवाएँ अक्सर अत्यधिक या अपर्याप्त डेटा लोडिंग से ग्रस्त होती हैं। GraphQL एक क्वेरी भाषा और रनटाइम वातावरण है, जिसे Facebook द्वारा बनाया गया है, जो क्लाइंट को ठीक वही डेटा माँगने की अनुमति देता है जिसकी उन्हें आवश्यकता है। PHP के लिए सबसे लोकप्रिय कार्यान्वयनों में से एक webonyx/graphql-php लाइब्रेरी है।
यह लाइब्रेरी PHP पर GraphQL सर्वर बनाने के लिए उपकरणों का एक पूरा सेट प्रदान करती है: टाइप स्कीमा को परिभाषित करने से लेकर नेस्टेड संबंधों के साथ जटिल क्वेरी को संसाधित करने तक। यह वेब एप्लिकेशन, मोबाइल एप्लिकेशन और SPA (सिंगल पेज एप्लिकेशन) के लिए आधुनिक API बनाने के लिए आदर्श है।
\n\nwebonyx/graphql-php की मुख्य विशेषताएँ
\n\n- \n
- GraphQL विनिर्देश का पूर्ण समर्थन (जून 2018) — सभी प्रकार, निर्देश, चर और खंड। \n
- PHP ऑब्जेक्ट-आधारित टाइप सिस्टम — प्रकार, इंटरफ़ेस, यूनियन-प्रकार और एनम की परिभाषा। \n
- अंतर्निहित रिज़ॉल्वर — प्रत्येक फ़ील्ड के लिए डेटा प्राप्त करने का तर्क निर्धारित करने की क्षमता। \n
- क्वेरी सत्यापन — सिंटैक्स और प्रकारों की स्वचालित जाँच। \n
- आलसी लोडिंग का समर्थन — डेटा केवल अनुरोध पर लोड होता है। \n
- लोकप्रिय फ्रेमवर्क के साथ संगतता — Laravel, Symfony, Yii2 रैपर पैकेज के माध्यम से। \n
स्थापना और कॉन्फ़िगरेशन
\n\nस्थापना Composer के माध्यम से की जाती है:
\n\ncomposer require webonyx/graphql-php\n\nकाम करने के लिए mbstring एक्सटेंशन के साथ PHP 7.1+ की आवश्यकता है। स्थापना के बाद, एक सरल सर्वर बनाएँ।
उदाहरण: GraphQL स्कीमा बनाना
\n\nएक बुनियादी उदाहरण पर विचार करें — पुस्तकों और लेखकों की सूची प्राप्त करना। पहले प्रकारों को परिभाषित करें:
\n\n<?php\nuse GraphQL\\Type\\Definition\\ObjectType;\nuse GraphQL\\Type\\Definition\\Type;\nuse GraphQL\\Type\\Schema;\n\n// "Author" प्रकार\n$authorType = new ObjectType([\n 'name' => 'Author',\n 'fields' => [\n 'id' => Type::int(),\n 'name' => Type::string(),\n 'books' => [\n 'type' => Type::listOf($bookType), // नीचे परिभाषित किया जाएगा\n 'resolve' => function ($author) {\n // मान लें कि getBooksByAuthorId() फ़ंक्शन है\n return getBooksByAuthorId($author['id']);\n }\n ]\n ]\n]);\n\n// "Book" प्रकार (चक्रीय संदर्भों के लिए क्लोजर के साथ परिभाषित करें)\n$bookType = new ObjectType([\n 'name' => 'Book',\n 'fields' => function() use ($authorType) {\n return [\n 'id' => Type::int(),\n 'title' => Type::string(),\n 'author' => [\n 'type' => $authorType,\n 'resolve' => function ($book) {\n return getAuthorById($book['author_id']);\n }\n ]\n ];\n }\n]);\n\n// "Query" प्रकार\n$queryType = new ObjectType([\n 'name' => 'Query',\n 'fields' => [\n 'books' => [\n 'type' => Type::listOf($bookType),\n 'resolve' => function() {\n return getAllBooks();\n }\n ],\n 'author' => [\n 'type' => $authorType,\n 'args' => [\n 'id' => Type::nonNull(Type::int())\n ],\n 'resolve' => function($root, $args) {\n return getAuthorById($args['id']);\n }\n ]\n ]\n]);\n\n// स्कीमा बनाएँ\n$schema = new Schema([\n 'query' => $queryType\n]);\n\nक्वेरी प्रसंस्करण
\n\nअब वह कोड लिखें जो GraphQL क्वेरी प्राप्त करता है और परिणाम लौटाता है:
\n\n<?php\nuse GraphQL\\GraphQL;\nuse GraphQL\\Error\\DebugFlag;\n\n// इनपुट से क्वेरी बॉडी प्राप्त करें