परिचय: यह जानना क्यों ज़रूरी है कि सर्वर पर कौन सा रिक्वेस्ट आया?
\n\nकल्पना कीजिए कि आप एक लक्ज़री बिल्डिंग के सिक्योरिटी गार्ड हैं। आपके पास अलग-अलग लोग आते हैं: कुछ सिर्फ देखना चाहते हैं कि कौन रहता है (GET), कुछ नया रेसिडेंट जोड़ना चाहते हैं (POST), कुछ डेटा अपडेट करना चाहते हैं (PUT), और कुछ रिकॉर्ड डिलीट करना चाहते हैं (DELETE)। अगर आप एक्शन मिक्स कर देंगे, तो अफरा-तफरी मच जाएगी। PHP में भी ऐसा ही होता है जब आप कोई मॉडर्न वेब एप्लिकेशन या REST API बनाते हैं।
\n\nसवाल "PHP में रिक्वेस्ट टाइप कैसे पता करें (GET, POST, PUT या DELETE)" Stack Overflow पर सबसे पॉपुलर सवालों में से एक है (हज़ारों व्यूज़)। और यह कोई संयोग नहीं है। नए डेवलपर्स अक्सर if ($_POST) लिखते हैं और जब PUT या DELETE आता है तो बग पकड़ते हैं। आज हम एक बार और हमेशा के लिए समझ लेंगे कि PHP में HTTP रिक्वेस्ट मेथड को सही तरीके से कैसे पहचानें, ताकि आपका कोड प्रोफेशनल और रिलायबल हो।
यह आर्टिकल एजुकेशनल वेबसाइट PythonLib के लिए लिखा गया है, लेकिन यह टॉपिक सभी के लिए उपयोगी है। चलिए शुरू करते हैं!
\n\nHTTP मेथड क्या हैं और इन्हें अलग क्यों करना चाहिए?
\nHTTP एक प्रोटोकॉल है जिसके ज़रिए ब्राउज़र (या क्लाइंट) सर्वर से बात करता है। हर रिक्वेस्ट का एक मेथड (verb) होता है जो सर्वर को बताता है कि क्या करना है:
\n- \n
- GET — डेटा प्राप्त करना (पढ़ना)। सुरक्षित, idempotent। \n
- POST — डेटा भेजना (नया रिसोर्स बनाना)। \n
- PUT — रिसोर्स को पूरी तरह बदलना (अपडेट करना)। \n
- DELETE — रिसोर्स को हटाना। \n
- PATCH — आंशिक रूप से अपडेट करना (कम इस्तेमाल होता है)। \n
क्लासिक HTML फॉर्म में ब्राउज़र सिर्फ GET और POST सपोर्ट करता है। लेकिन REST API (जैसे मोबाइल ऐप या AJAX के लिए) में सभी मेथड एक्टिवली इस्तेमाल होते हैं। अगर आप यूनिवर्सल बैकएंड लिख रहे हैं, तो आपको इन्हें अलग-अलग पहचानना आना चाहिए।
\n\nसबसे ज़रूरी टूल: $_SERVER['REQUEST_METHOD']
\nPHP में रिक्वेस्ट की सारी जानकारी सुपरग्लोबल ऐरे $_SERVER में स्टोर होती है। की REQUEST_METHOD में मेथड का नाम स्ट्रिंग के रूप में होता है: 'GET', 'POST', 'PUT', 'DELETE' आदि।
यहाँ एक बेसिक उदाहरण है:
\n<?php\n$method = $_SERVER['REQUEST_METHOD'];\necho "रिक्वेस्ट टाइप: " . $method;\n?>\nइस कोड को अपने सर्वर पर रन करें। अगर आप ब्राउज़र में पेज खोलेंगे — GET दिखेगा। अगर method="POST" वाला फॉर्म सबमिट करेंगे — POST दिखेगा। बहुत सिंपल है।
लेकिन यह सिर्फ शुरुआत है। आइए देखें कि मेथड के आधार पर लॉजिक कैसे बनाएं।
\n\nप्रैक्टिकल उदाहरण: REST API के लिए राउटर
\nमान लीजिए हम एक सिंपल टू-डू लिस्ट API बना रहे हैं। हमारा एक एंडपॉइंट है — /api/tasks। रिक्वेस्ट मेथड के हिसाब से हम अलग-अलग एक्शन करेंगे:
- \n
- GET — सभी टास्क की लिस्ट दिखाना। \n
- POST — नया टास्क बनाना। \n
- PUT — मौजूदा टास्क को अपडेट करना (पूरी तरह बदलना)। \n
- DELETE — टास्क को हटाना। \n
कोड में यह इस तरह दिखेगा:
\n<?php\n// रिक्वेस्ट मेथड पहचानें\n$method = $_SERVER['REQUEST_METHOD'];\n\n// राउटिंग\nswitch ($method) {\n case 'GET':\n // GET रिक्वेस्ट हैंडल करें\n echo "टास्क की लिस्ट दिखा रहे हैं...";\n // यहाँ डेटाबेस से डेटा लाने की लॉजिक\n break;\n\n case 'POST':\n // POST रिक्वेस्ट हैंडल करें\n echo "नया टास्क बना रहे हैं...";\n // $_POST में फॉर्म का डेटा होता है\n $title = $_POST['title'] ?? '';\n // डेटाबेस में सेव करने की लॉजिक\n break;\n\n case 'PUT':\n // PUT रिक्वेस्ट हैंडल करें\n echo "टास्क अपडेट कर रहे हैं...";\n // ज़रूरी: PUT डेटा $_POST में नहीं आता!\n // इसे php://input से पढ़ना होता है\n $putData = json_decode(file_get_contents('php://input'), true);\n // अपडेट लॉजिक\n break;\n\n case 'DELETE':\n // DELETE रिक्वेस्ट हैंडल करें\n echo "टास्क डिलीट कर रहे हैं...";\n // DELETE के लिए भी php://input से डेटा पढ़ सकते हैं\n break;\n\n default:\n // अगर कोई और मेथड है\n http_response_code(405);\n echo "यह मेथड सपोर्टेड नहीं है";\n break;\n}\n?>