PHP में API: REST, GraphQL और gRPC – 2025 में क्या चुनें?

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

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

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

परिचय: API – कोई जादू नहीं, बल्कि एक उपकरण

\n

जब आपकी PHP साइट एक स्थिर पेज से आगे बढ़कर बाहरी दुनिया से बातचीत करने लगती है – जैसे Telegram बॉट्स, पेमेंट गेटवे, या आपका अपना मोबाइल ऐप – तो आप अनिवार्य रूप से API (Application Programming Interface) का सामना करते हैं। यह एक सरल अनुबंध है: "अगर तुम मुझे इस फॉर्मेट में अनुरोध भेजोगे, तो मैं तुम्हें डेटा लौटाऊंगा।" आज PHP की दुनिया में तीन मुख्य खिलाड़ी हैं: क्लासिक REST, लचीला GraphQL, और दमदार gRPC। किसे चुनें? आइए, वास्तविक उदाहरणों के साथ समझते हैं।

\n

यह लेख उन लोगों के लिए है जो PHP में कोड करना जानते हैं और अपने ज्ञान का विस्तार करना चाहते हैं। हम सिर्फ डॉक्यूमेंटेशन कॉपी नहीं करेंगे, बल्कि हर प्रोटोकॉल को एक डेवलपर की नज़र से देखेंगे जो एक वास्तविक समस्या का समाधान कर रहा है।

\n\n

PHP में REST API: सिद्ध क्लासिक

\n

REST (Representational State Transfer) कोई प्रोटोकॉल नहीं, बल्कि एक आर्किटेक्चरल शैली है। यह संसाधनों के साथ काम करने के लिए HTTP मेथड्स (GET, POST, PUT, DELETE) का उपयोग करता है। अगर आपने कभी file_get_contents('https://api.example.com/users') लिखा है – तो आप पहले से ही REST के साथ काम कर चुके हैं।

\n

REST अभी भी राजा क्यों है?

\n
    \n
  • सरलता: कोई भी HTTP क्लाइंट इसके साथ काम कर सकता है।
  • \n
  • कैशिंग: HTTP स्तर पर GET अनुरोधों को कैश किया जा सकता है।
  • \n
  • व्यापक समर्थन: curl से लेकर विशेष लाइब्रेरी तक।
  • \n
\n

Guzzle के साथ PHP REST क्लाइंट का उदाहरण

\n

Guzzle लाइब्रेरी PHP में HTTP अनुरोधों के लिए डी-फैक्टो मानक है। इसे Composer के माध्यम से इंस्टॉल करें: composer require guzzlehttp/guzzle।

\n
<?php\nrequire 'vendor/autoload.php';\n\nuse GuzzleHttp\\Client;\n\n$client = new Client([\n    'base_uri' => 'https://jsonplaceholder.typicode.com/',\n    'timeout'  => 5.0,\n]);\n\n// GET अनुरोध\n$response = $client->get('posts/1');\n$post = json_decode($response->getBody(), true);\necho "पोस्ट का शीर्षक: " . $post['title'] . PHP_EOL;\n\n// POST अनुरोध\n$response = $client->post('posts', [\n    'json' => [\n        'title' => 'नई पोस्ट',\n        'body' => 'पोस्ट का टेक्स्ट',\n        'userId' => 1\n    ]\n]);\necho "पोस्ट ID के साथ बनाई गई: " . json_decode($response->getBody(), true)['id'];\n?>
\n

हमने क्या किया? बस HTTP अनुरोध भेजे। REST को किसी विशेष लाइब्रेरी की आवश्यकता नहीं है – आप कॉन्टेक्स्ट के साथ file_get_contents() का भी उपयोग कर सकते हैं, लेकिन Guzzle एरर हैंडलिंग, मिडलवेयर और स्ट्रीमिंग ट्रांसफर जैसी सुविधाएं प्रदान करता है।

\n

REST कब अच्छा विकल्प नहीं है?

\n

अगर आपको संबंधित डेटा (जैसे पोस्ट + लेखक + टिप्पणियाँ) प्राप्त करना है, तो REST आपको कई अनुरोध करने पर मजबूर करेगा। यहीं पर GraphQL की भूमिका आती है।

\n\n

PHP में GraphQL: सिर्फ वही मांगें जो चाहिए

\n

GraphQL एक क्वेरी भाषा है जिसे Facebook ने विकसित किया है। क्लाइंट खुद रिस्पॉन्स की संरचना तय करता है। एक अनुरोध – एक उत्तर, बिना अतिरिक्त या कम डेटा के।

\n

PHP में GraphQL कैसे काम करता है?

\n

सर्वर साइड: webonyx/graphql-php लाइब्रेरी (इंस्टॉल: composer require webonyx/graphql-php)। क्लाइंट साइड – JSON बॉडी के साथ एक सामान्य HTTP POST अनुरोध।

\n

PHP से GraphQL क्वेरी का उदाहरण

\n
<?php\nrequire 'vendor/autoload.php';\n\nuse GuzzleHttp\\Client;\n\n$client = new Client(['base_uri' => 'https://countries.trevorblades.com/']);\n\n$query = '\nquery GetCountry {\n    country(code: "IN") {\n        name\n        capital\n        currency\n        languages {\n            name\n        }\n    }\n}';\n\n$response = $client->post('', [\n    'json' => ['query' => $query]\n]);\n\n$data = json_decode($response->getBody(), true);\necho "देश: " . $data['data']['country']['name'] . PHP_EOL;\necho "राजधानी: " . $data['data']['country']['capital'] . PHP_EOL;\necho "मुद्रा: " . $data['data']['country']['currency'] . PHP_EOL;\necho "भाषाएं: ";\nforeach ($data['data']['country']['languages'] as $lang) {\n    echo $lang['name'] . " ";\n}\n?>

ब्लॉग

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