परिचय: PHP में HTTP क्लाइंट की आवश्यकता क्यों है?
\n\nआधुनिक वेब डेवलपमेंट बाहरी सेवाओं के साथ इंटरैक्शन के बिना अधूरा है। चाहे वह किसी थर्ड-पार्टी API पर डेटा भेजना हो, मुद्रा दर प्राप्त करना हो, या भुगतान गेटवे के साथ एकीकरण करना हो — हर PHP डेवलपर को HTTP अनुरोध करने की आवश्यकता होती है। एक विश्वसनीय PHP HTTP क्लाइंट बनाना एक बुनियादी कौशल है जो आपके एप्लिकेशन को बाकी दुनिया से जोड़ता है।
\n\nइस लेख में, हम दो मुख्य दृष्टिकोणों पर चर्चा करेंगे: बिल्ट-इन cURL एक्सटेंशन और लोकप्रिय Guzzle लाइब्रेरी का उपयोग। आप सीखेंगे कि GET, POST, PUT और DELETE अनुरोधों को सही तरीके से कैसे भेजें, त्रुटियों को कैसे संभालें, और हेडर के साथ कैसे काम करें। यह सामग्री शुरुआती और अनुभवी डेवलपर्स दोनों के लिए उपयोगी होगी जो अपने ज्ञान को व्यवस्थित करना चाहते हैं।
\n\n1. PHP HTTP क्लाइंट की मूल बातें: cURL के साथ काम करना
\n\n1.1. cURL क्या है और यह क्यों महत्वपूर्ण है
\n\ncURL (Client URL Library) एक शक्तिशाली PHP एक्सटेंशन है जो आपको HTTP, HTTPS, FTP और अन्य प्रोटोकॉल के माध्यम से विभिन्न सर्वरों के साथ इंटरैक्ट करने की अनुमति देता है। यह PHP की मानक स्थापना में शामिल है, लेकिन कभी-कभी php.ini में अलग से सक्रियण की आवश्यकता होती है। cURL अनुरोध पर पूर्ण नियंत्रण देता है: आप कोई भी विधि, हेडर, अनुरोध का मुख्य भाग और टाइमआउट सेट कर सकते हैं।
\n\n1.2. cURL के साथ सरल GET-अनुरोध
\n\nचलिए सबसे सामान्य परिदृश्य से शुरू करते हैं — सर्वर से डेटा प्राप्त करना। सार्वजनिक JSONPlaceholder API के लिए अनुरोध का उदाहरण देखें:
\n\n<?php\n// cURL सत्र आरंभ करें\n$ch = curl_init('https://jsonplaceholder.typicode.com/posts/1');\n\n// विकल्प सेट करें\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_HTTPGET, true);\ncurl_setopt($ch, CURLOPT_TIMEOUT, 30);\n\n// अनुरोध निष्पादित करें\n$response = curl_exec($ch);\n$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n\n// त्रुटियों की जाँच करें\nif (curl_errno($ch)) {\n echo 'cURL त्रुटि: ' . curl_error($ch);\n} else {\n echo "HTTP कोड: $httpCode\\n";\n $data = json_decode($response, true);\n print_r($data);\n}\n\n// सत्र बंद करें\ncurl_close($ch);\n?>\n\nध्यान दें: हम हमेशा प्रतिक्रिया कोड और त्रुटियों की जाँच करते हैं। CURLOPT_RETURNTRANSFER सुनिश्चित करता है कि परिणाम एक वेरिएबल में वापस आए, न कि सीधे आउटपुट हो।
1.3. डेटा के साथ POST-अनुरोध भेजना
\n\nसर्वर पर डेटा भेजने के लिए (उदाहरण के लिए, एक नया रिकॉर्ड बनाते समय) POST का उपयोग करें। डेटा को ऐरे या JSON स्ट्रिंग के रूप में भेजा जा सकता है:
\n\n<?php\n$ch = curl_init('https://jsonplaceholder.typicode.com/posts');\n\n$postData = [\n 'title' => 'नया पोस्ट',\n 'body' => 'पोस्ट की सामग्री',\n 'userId' => 1\n];\n\ncurl_setopt_array($ch, [\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_POST => true,\n CURLOPT_POSTFIELDS => json_encode($postData), // JSON\n CURLOPT_HTTPHEADER => [\n 'Content-Type: application/json',\n 'Accept: application/json'\n ],\n CURLOPT_TIMEOUT => 30\n]);\n\n$response = curl_exec($ch);\n$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\necho "HTTP कोड: $httpCode\\n";\necho $response;\n?>\n\nमुख्य बिंदु: यदि आप CURLOPT_POSTFIELDS में एक ऐरे पास करते हैं, तो PHP स्वचालित रूप से इसे application/x-www-form-urlencoded के रूप में एनकोड करेगा। JSON के लिए json_encode() का उपयोग करें और स्पष्ट रूप से Content-Type हेडर निर्दिष्ट करें।
1.4. PUT और DELETE अनुरोध
\n\nसंसाधनों को अपडेट और हटाने के लिए PUT और DELETE विधियों का उपयोग किया जाता है। cURL में, वे CURLOPT_CUSTOMREQUEST विकल्प के माध्यम से सेट किए जाते हैं:
<?php\n// PUT अनुरोध (अपडेट)\n$ch = curl_init('https://jsonplaceholder.typicode.com/posts/1');\n$updateData = ['title' => 'अपडेटेड शीर्षक'];\n\ncurl_setopt_array($ch, [\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_CUSTOMREQUEST => 'PUT',\n CURLOPT_POSTFIELDS => json_encode($updateData),\n CURLOPT_HTTPHEADER =>