PHP में GraphQL: API बनाने के लिए webonyx/graphql-php लाइब्रेरी

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

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

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

PHP GraphQL लाइब्रेरी: webonyx/graphql-php

\n\n

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

\n\n

यह लाइब्रेरी PHP पर GraphQL सर्वर बनाने के लिए उपकरणों का एक पूरा सेट प्रदान करती है: टाइप स्कीमा को परिभाषित करने से लेकर नेस्टेड संबंधों के साथ जटिल क्वेरी को संसाधित करने तक। यह वेब एप्लिकेशन, मोबाइल एप्लिकेशन और SPA (सिंगल पेज एप्लिकेशन) के लिए आधुनिक API बनाने के लिए आदर्श है।

\n\n

webonyx/graphql-php की मुख्य विशेषताएँ

\n\n
    \n
  • GraphQL विनिर्देश का पूर्ण समर्थन (जून 2018) — सभी प्रकार, निर्देश, चर और खंड।
  • \n
  • PHP ऑब्जेक्ट-आधारित टाइप सिस्टम — प्रकार, इंटरफ़ेस, यूनियन-प्रकार और एनम की परिभाषा।
  • \n
  • अंतर्निहित रिज़ॉल्वर — प्रत्येक फ़ील्ड के लिए डेटा प्राप्त करने का तर्क निर्धारित करने की क्षमता।
  • \n
  • क्वेरी सत्यापन — सिंटैक्स और प्रकारों की स्वचालित जाँच।
  • \n
  • आलसी लोडिंग का समर्थन — डेटा केवल अनुरोध पर लोड होता है।
  • \n
  • लोकप्रिय फ्रेमवर्क के साथ संगतता — Laravel, Symfony, Yii2 रैपर पैकेज के माध्यम से।
  • \n
\n\n

स्थापना और कॉन्फ़िगरेशन

\n\n

स्थापना Composer के माध्यम से की जाती है:

\n\n
composer require webonyx/graphql-php
\n\n

काम करने के लिए mbstring एक्सटेंशन के साथ PHP 7.1+ की आवश्यकता है। स्थापना के बाद, एक सरल सर्वर बनाएँ।

\n\n

उदाहरण: 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// इनपुट से क्वेरी बॉडी प्राप्त करें                    

अनुशंसाएँ