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

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

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

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

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



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



webonyx/graphql-php की स्थापना

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

composer require webonyx/graphql-php


स्कीमा और प्रकार बनाना

GraphQL का आधार स्कीमा है, जो डेटा प्रकारों और उनके संबंधों को परिभाषित करता है। आइए उपयोगकर्ताओं की सूची प्राप्त करने के लिए एक सरल स्कीमा बनाने का उदाहरण देखें।



<?phpuse GraphQL\\Type\\Definition\\ObjectType;use GraphQL\\Type\\Definition\\Type;use GraphQL\\Type\\Schema;use GraphQL\\GraphQL;

// 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) { // उदाहरण डेटा - वास्तविक प्रोजेक्ट में यहाँ डेटाबेस क्वेरी होगी $users = [ 1 => ['id' => 1, 'name' => 'इवान', 'email' => 'ivan@example.com'], 2 => ['id' => 2, 'name' => 'मारिया', 'email' => 'maria@example.com'], ]; return $users[$args['id']] ?? null; } ], 'users' => [ 'type' => Type::listOf($userType), 'resolve' => function () { return [ ['id' => 1, 'name' => 'इवान', 'email' => 'ivan@example.com'], ['id' => 2, 'name' => 'मारिया', 'email' => 'maria@example.com'], ]; } ] ]]);

// स्कीमा बनाएँ$schema = new Schema([ 'query' => $queryType]);

// क्वेरी निष्पादित करें$rawInput = file_get_contents('php://input');$input = json_decode($rawInput, true);$query = $input['query'];$result = GraphQL::executeQuery($schema, $query);$output = $result->toArray();

header('Content-Type: application/json');echo json_encode($output);


म्यूटेशन के साथ कार्य करना

क्वेरी के अलावा, GraphQL डेटा बदलने के लिए म्यूटेशन का समर्थन करता है। उपयोगकर्ता जोड़ने के लिए म्यूटेशन बनाने का उदाहरण:



<?php// म्यूटेशन प्रकार परिभाषित करें$mutationType = new ObjectType([    'name' => 'Mutation',    'fields' => [        'addUser' => [            'type' => $userType,            'args' => [                'name' => Type::nonNull(Type::string()),                'email' => Type::nonNull(Type::string())            ],            'resolve' => function ($root, $args) {                // यहाँ डेटाबेस में सहेजने का कोड होना चाहिए                return [                    'id' => 3,                    'name' => $args['name'],                    'email' => $args['email']                ];            }        ]    ]]);

// स्कीमा अपडेट करें$schema = new Schema([ 'query' => $queryType, 'mutation' => $mutationType]);


Laravel के लिए Lighthouse का उपयोग

यदि आप Laravel के साथ काम कर रहे हैं, तो Lighthouse का उपयोग करने की अनुशंसा की जाती है। यह Eloquent मॉडल के आधार पर स्कीमा निर्माण को स्वचालित करता है और प्रदान करता है

अनुशंसाएँ