WordPress HTTP API – वर्तमान समय के Modern Web को Web 2.0 के नाम से भी जाना जाता है, जिसके अन्तर्गत विभिन्न प्रकार की Internet Based Services आपस में एक दूसरे के साथ Communicate करते हुए विभिन्न प्रकार की जरूरतों को पूरा करते हैं।
उदाहरण के लिए हम अपने Twitter Account के Latest Tweet को अपनी Site पर Display कर सकते हैं। अपने Facebook Account के Comment Box को अपनी Site पर Use कर सकते हैं, अपने Videos को YouTube पर Publish कर सकते हैं व उन्हीं Videos को YouTube से अपनी Site पर Retrieve करके अपनी Site के माध्यम से भी Play कर सकते हैं।
इस प्रकार के Inter-Domain Functionalities को प्राप्त करने के लिए ही विभिन्न प्रकार की Net Based Services Develop की गई हैं और इन Services के समूह को ही Web 2.0 Services के नाम से जाना जाता है।
इसलिए यदि हम अपनी Site/Blog को WordPress System का प्रयोग करते हुए Develop करते हैं, तो हमारी Site भी इन Web 2.0 की Interoperability से वंचित नहीं होना चाहिए। इसीलिए WordPress हमें HTTP API Provide करता है, जिसके माध्यम से हम उपरोक्तानुसार Discussed विभिन्न प्रकार की Functionalities को अपने WordPress Based Site/Blog पर भी प्राप्त कर सकते हैं।
Fundamentals of HTTP Requests
WordPress द्वारा Web 2.0 की सुविधाऐं प्राप्त करने के लिए हमें WordPress द्वारा Provided HTTP API को ही Use करना होता है। लेकिन ये API भी पूरी तरह से HTTP Request/Response Cycle पर ही आधारित है, जिन्हें सभी Web Sites व ।Applications Follow करते हैं। इसलिए HTTP को बेहतर तरीके से समझे बिना हम WordPress के HTTP API को ठीक से नहीं समझ सकते।
What is HTTP Request
HTTP एक Networking Protocol है, जो World Wide Web पर विभिन्न प्रकार की Information को एक Device से दूसरी Device के बीच Communication करने के लिए Standard तरीका Provide करता है।
HTTP वास्तव में Request व Response का पूरा एक Cycle होता है। जिसके अन्तर्गत Client Web Browser किसी Specific Resource के लिए Request Perform करता है, जिसे Web Server Response के रूप में Fulfill करता है।
Request व Response दोनों ही प्रकार के Objects में इस बात की पर्याप्त जानकारी होती है कि किस Resource के लिए कौनसा User किस प्रकार से Request कर रहा है और Request को Fulfill करने के लिए Response Object उसी User को वही Resource Available करवाता है, जिसके लिए Client ने Request Perform किया होता है। Request व Response Object में Internally जो Hidden Information होती हैं, उन्हीं के आधार पर Request व Response Objects एक दूसरे को आपस में Identify कर पाते हैं।
HTTP Transaction के अन्तर्गत एक Client किसी Server से किसी Resource के लिए Request Perform करने के लिए एक Request Object Create करता है, जिसमें Requested Resource के साथ ही कई और जानकारियां भी होती हैं, जिनकी जरूरत Web Server को फिर से उसी Client को Identify करने के लिए होती है, जिसने Request Perform किया होता है। क्योंकि HTTP एक Stateless Protocol है और Client व Server एक दूसरे को केवल तभी तक Identify करते हैं, जब तक एक Request/Response Cycle पूरा नहीं हो जाता।
उदाहरण के लिए हम http://www.example.com/file.html URL को Web Browser के Address Bar में Specify करें, तो बनने वाले Request Object की विभिन्न Information निम्नानुसार हो सकती हैं:
GET /file.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0) Firefox/3.6
Referer: http://www.google.com/search?q=example.com
Cookie: lastvisit=235456684
जहां पहली Line GET से Start होती है। GET Session के माध्यम से हम Web Server को इस बात का Instruction देते हैं कि हम Web Server से किस तरीके का प्रयोग करते हुए Data Retrieve करना चाहते हैं। इसके स्थान पर HEAD या POST Method को भी Use किया जा सकता है, जहां HEAD Method केवल Requested Resource file.html की Header Information ही Return करता है जबकि POST Method किसी Form के Data को Web Server पर Submit करता है।
जब Web Server पर Request Object Retrieve होता है, तो Web Server Requested Resource को अपने Web Server पर Search करता है और यदि Requested Resource Exist हो, तो Web Server एक Response Object Create करता है। इस Response Object में Headers, Response Information व Response Body के रूप में तीन हिस्से होते हैं। जैसे:
HTTP/1.1 200 OK
Date: Mon, 23 May 2012 22:38:34 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Set-Cookie: lastvisit=235456951
Content-Length: 438
Content-Type: text/html; charset=UTF-8
इस Response Object की पहली Line में Specified Status Code ही इस बात को निश्चित कर देता है कि Request का क्या Response रहा। यदि Status Code का मान 200 हो, जैसाकि हमारे उपरोक्त Example Response Code का है, तो ये Status Code इस बात को Represent करता है कि हमारा Request Normal तरीके से Perform हो गया है व Web Server ने Requested Resource को Response के रूप में Return किया है। कुछ विशेष रूप से काम आने वाले Status Codes निम्नानुसार हैं:
STATUS CODE SIGNIFICATION
200 OK
301 Moved Permanently
302 Moved Temporarily
403 Forbidden
404 Not Found
500 Internal Server Error
503 Service Unavailable
हालांकि ये सभी Status Codes Mostly उपयोग में आते हैं। फिर भी विभिन्न HTTP Status Codes की Category को हम निम्नानुसार Represent कर सकते हैं:
STATUS CODE | SIGNIFICATION |
2xx | Request was successful. |
3xx | Request was redirected to another resource (like in the case of a URL shortener). |
4xx | Request failed because of a client error (for instance, a wrong username/password combination). |
5xx | Request failed because of a server error (like a bad configuration or a broken script). |
HTTP Request/Response के बारे में Detail से जानने के लिए आप हमारी अन्य पुस्तक “Advance JavaScript in Hindi” व “Core PHP in Hindi” भी पढ़ सकते हैं।
HTTP Request का सबसे मुख्य उपयोग किसी Remove Document या उसके किसी हिस्से को Retrieve करना होता है। उदाहरण के लिए जब हम Latest Tweet को Retrieve करना चाहते हैं या Latest Share Stock Price Retrieve करना चाहते हैं या JSON Encoded Data को किसी Remote API Service के माध्यम से प्राप्त करना चाहते हैं, तब हमे HTTP Request Object को Define करने की जरूरत पडती है।
HTTP Request Object द्वारा हम किसी Remote Document जैसे कि किसी Form या HTTP API को भी कोई Information Send कर सकते हैं व Remote Document के Data को Client Script के माध्यम से भी Modify कर सकते हैं।
इन Requests को GET या POST Methods का प्रयोग Perform किया जाता है और कई बार तो इन Objects में Authentication Mechanism या Login Credentials की Information भी विभिन्न जरूरी Parameters के साथ Exist होती है।
इनके अलावा HEAD Requests द्वारा भी कई प्रकार के Interesting Applications Create किए जा सकते हैं। जैसे कि Remote Document को Download किए बिना उसकी Status जानने के लिए HEAD Method का प्रयोग करते हुए Request कर सकते हैं।
Defining HTTP Requests in PHP
Core PHP में कई तरीकों का प्रयोग करते हुए हम HTTP Request Create करके Send कर सकते हैं। इसलिए Core PHP के इन विभिन्न तरीकों में से कुछ के बारे में बेहतर तरीके से समझना हमारे लिए उस स्थिति में काफी उपयोगी होता है, जब हम WordPress द्वारा Provided तरीके को ज्यादा बेहतर तरीके से समझना व आसानी से उपयोग में लेना चाहते हैं।
हम Core PHP के HTTP Extension का प्रयोग करते हुए GET Request Send कर सकते हैं और Return होने वाले Content को अपनी जरूरत के अनुसार उपयोग में ले सकते हैं। जैसे:
$r= new HttpRequest( 'https://www.bccfalna.com/', HttpRequest::METH_GET ); $r->send() ; echo $r-> getResponseBody();
जबकि Core PHP हमें fopen() Stream Function भी Provide करता है, जिसका प्रयोग करके भी हम GET Request Send कर सकते हैं। जैसे:
if( $stream = fopen('https://www.bccfalna.com/', 'r' ) ) { echo stream_get_contents( $stream ); fclose($stream); }
इसके अलावा हम Standard fopen() Function का प्रयोग करते हुए भी GET Request Send कर सकते हैं। जैसे:
$handle = fopen( "https://www.bccfalna.com/", "rb" ); $contents = ''; while( !feof( $handle ) ) { $contents .= fread( $handle, 8192 ); } fclose( $handle ); echo $contents;
हम Standard fsockopen() Function का प्रयोग करते हुए भी GET Request Send कर सकते हैं। जैसे:
$fp = fsockopen( "www.bccfalna.com", 80, $errno, $errstr, 30 ); if (!$fp) { echo "$errstr ($errno) <br /> \n"; } else { $out = "GET / HTTP/1.1\r\n"; $out .= "Host: wordpress.org\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); while (!feof($fp)) { echo fgets($fp, 128); } fclose($fp); }
जबकि CURL Extension Exist होने पर हम इसका प्रयोग करते हुए भी GET Request Send कर सकते हैं। जैसे:
$ch = curl_init(); curl_setopt( $ch, CURLOPT_URL, "https://www.bccfalna.com/" ); curl_setopt( $ch, CURLOPT_HEADER, 0 ); curl_exec($ch); curl_close($ch);
यानी Core PHP में कई ऐसे तरीके उपलब्ध हैं, जिनका प्रयोग करते हुए HTTP GET Request Send किया जा सकता है और हर तरीके के अपने फायदे व नुकसान हैं। कुछ तरीके लिखने में ज्यादा आसान हैं लेकिन उनकी Execution Speed कम है। जबकि कुछ में विभिन्न प्रकार के Parameters को Specify करना जरूरी होता है लेकिन उनकी Execution Speed काफी तेज होती है।
साथ ही अलग-अलग प्रकार के Web Server Setups व Configurations के कारण भी ये सभी तरीके सभी प्रकार के Web Servers पर Security Settings, Use हो रहे PHP Version आदि के कारण उपलब्ध या Working भी नहीं होते।
अत: WordPress Plugin Create करते समय हम कभी भी निश्चित रूप से इस बात को तय नहीं कर सकते कि हमें कौनसा तरीका Use करते हुए HTTP Get Request Perform करना चाहिए। इसीलिए WordPress हमें इन सब परेशानियों से बचने के लिए HTTP API Provide करता है।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Advance WordPress in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।
Advance WordPress in Hindi | Page: 835 | Format: PDF