Guzzle क्या है और इसकी आवश्यकता क्यों है?
Guzzle एक शक्तिशाली PHP लाइब्रेरी है जो HTTP रिक्वेस्ट को संभालने के लिए उपयोग की जाती है। यह HTTP रिक्वेस्ट भेजने, रिस्पॉन्स प्रोसेस करने, कुकीज़, सेशन, एसिंक्रोनस रिक्वेस्ट और बहुत कुछ करने के लिए एक सुविधाजनक इंटरफ़ेस प्रदान करता है। यदि आप API के साथ काम करते हैं, वेब पेज स्क्रैप करते हैं, या रिमोट सर्वर से डेटा लेते हैं, तो Guzzle आपके लिए एक अनिवार्य टूल है।
Guzzle की मुख्य विशेषताएं:
- सभी HTTP मेथड्स का सपोर्ट (GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS)
- हेडर, रिक्वेस्ट बॉडी, URL पैरामीटर के साथ काम करना
- एसिंक्रोनस रिक्वेस्ट का सपोर्ट (Promise-based)
- ऑटोमैटिक रीडायरेक्ट हैंडलिंग
- कुकीज़ और सेशन के साथ काम करना
- फंक्शनैलिटी बढ़ाने के लिए Middleware
- PSR-7 सपोर्ट (HTTP मैसेज के लिए PSR-7 इंटरफ़ेस)
- आसान टेस्टिंग और मॉकिंग
Guzzle का उपयोग Laravel (बिल्ट-इन HTTP क्लाइंट), Drupal, Magento जैसे बड़े प्रोजेक्ट्स में किया जाता है।
इंस्टॉलेशन
Guzzle को इंस्टॉल करने के लिए Composer का उपयोग करें, जो PHP के लिए डिपेंडेंसी मैनेजर है। यदि आपके पास Composer नहीं है, तो इसे आधिकारिक साइट getcomposer.org से इंस्टॉल करें।
अपने प्रोजेक्ट की रूट डायरेक्टरी में टर्मिनल में यह कमांड चलाएं:
composer require guzzlehttp/guzzle
इंस्टॉलेशन के बाद, अपने PHP फ़ाइल में Composer ऑटोलोडर को शामिल करें:
require 'vendor/autoload.php';
अब आप Guzzle के साथ काम करने के लिए तैयार हैं।
त्वरित शुरुआत
चलिए एक सरल GET रिक्वेस्ट पब्लिक API पर भेजते हैं और JSON फॉर्मेट में डेटा प्राप्त करते हैं।
<?php
require 'vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client();
$response = $client->get('https://jsonplaceholder.typicode.com/posts/1');
// रिस्पॉन्स बॉडी प्राप्त करें
$body = $response->getBody();
// JSON को ऐरे में बदलें
$data = json_decode($body, true);
echo "Title: " . $data['title'] . "\n";
echo "Body: " . $data['body'] . "\n";
?>
यह उदाहरण दिखाता है कि रिमोट सर्वर से डेटा प्राप्त करना कितना आसान है। Guzzle ऑटोमैटिकली हेडर, स्टेटस कोड और रिस्पॉन्स बॉडी को हैंडल करता है।
मुख्य तरीके और फंक्शन
1. get() — GET रिक्वेस्ट
क्या करता है: दिए गए URL पर HTTP GET रिक्वेस्ट भेजता है। डेटा प्राप्त करने के लिए उपयोग किया जाता है।
पैरामीटर:
$uri(string) — रिक्वेस्ट का URL$options(array) — ऑप्शन का ऐरे (हेडर, query-पैरामीटर, टाइमआउट आदि)
उदाहरण:
<?php
$client = new GuzzleHttp\Client();
$response = $client->get('https://api.github.com/users/octocat', [
'headers' => [
'Accept' => 'application/json',
'User-Agent' => 'Guzzle-Demo'
],
'query' => [
'page' => 1,
'per_page' => 10
]
]);
echo $response->getStatusCode(); // 200
echo $response->getBody();
?>
2. post() — POST रिक्वेस्ट
क्या करता है: POST रिक्वेस्ट भेजता है। नए रिसोर्स बनाने या सर्वर पर डेटा भेजने के लिए उपयोग किया जाता है।
पैरामीटर:
$uri(string) — रिक्वेस्ट का URL$options(array) — ऑप्शन का ऐरे (body, form_params, json, multipart आदि)
उदाहरण:
<?php
$client = new GuzzleHttp\Client();
$response = $client->post('https://jsonplaceholder.typicode.com/posts', [
'json' => [
'title' => 'नया पोस्ट',
'body' => 'पोस्ट की सामग्री',
'userId' => 1
]
]);
echo $response->getStatusCode(); // 201
$data = json_decode($response->getBody(), true);
print_r($data);
?>
3. put() — PUT रिक्वेस्ट
क्या करता है: PUT रिक्वेस्ट भेजता है। मौजूदा रिसोर्स को अपडेट करने के लिए उपयोग किया जाता है।