Hindi (हिंदी) translation by Ashish Rampal (you can also view the original English article)
CodeIgniter एक PHP आधारित वेब अनुप्रयोग फ्रेमवर्क के रूप में अपनी सत्ता के लिए अच्छी तरह से ज्ञात होता जा रहा है, लेकिन यह अक्सर नहीं है कि हम इसे कुछ और के लिए इस्तेमाल किया जा रहा है के उदाहरण देखें। आज हम सीख जाओगे कैसे हम CodeIgniter एक शोकहारा एपीआई के लिए अपने मौजूदा वेब अनुप्रयोग बनाएँ, और प्रदर्शन कैसे अपने ही API या अन्य शोकहारा वेब-सेवाओं, जैसे कि Facebook और चहचहाना के साथ बातचीत करने के लिए उपयोग कर सकते हैं।
ट्यूटोरियल विवरण
- कार्यक्रम: CodeIgniter, CodeIgniter बाकी सर्वर और CodeIgniter बाकी ग्राहक
- कठिनाई: मध्यम
- अनुमान के अनुसार पूरा होने का समय: 30 मिनट
परिचय
यदि आप स्क्रैच से CodeIgniter श्रृंखला निम्नलिखित गया है कि अब यह अपेक्षाकृत जल्दी और आसानी से सरल वेब अनुप्रयोगों, जैसे कि ब्लॉग्स, सीएमएस प्रणालियों, विवरणिका साइटों, आदि को एक साथ रखा है आप द्वारा पता चल जाएगा। एक बात आप के बारे में नहीं सोचा सकता है CodeIgniter एक इंटरैक्टिव API बनाने के लिए उपयोग कर रहा है। कई मौजूदा बाकी implementations की कोशिश कर के बाद, मैंने पाया वे न केवल सादगी कमी रह गई थी लेकिन सुविधाओं के तुम एक शोकहारा कार्यान्वयन से उम्मीद करेंगे की सबसे याद आ रहे थे; तो मैं अपने ही बनाया। इस ट्यूटोरियल तुम शो कैसे अपने बाकी API अप सेट करने के लिए इस कोड का उपयोग करने के लिए करेंगे, और इसके साथ अपने वेब अनुप्रयोग से बातचीत करने के लिए कैसे का उदाहरण देता है।
मान्यताओं
- आप एक वेब सर्वर है सेट अप, स्थानीय रूप से या ऑनलाइन और कैसे यह पर फ़ाइलों का प्रबंधन करने के लिए जाना जाता है।
- आप स्क्रैच से ट्यूटोरियल CodeIgniter के कुछ पढ़ा है।
- तुम कैसे CodeIgniter ऊपर सेट करने के लिए पता है।
- तुम एक छोटे RESTful सेवाओं के बारे में पता है।
इस ट्यूटोरियल के नीचे दो हिस्सों में टूट गया है। हम कैसे एक RESTful सेवा बनाने के लिए सीखने के द्वारा शुरू कर देंगे, तो आगे नीचे है, हम इसके साथ कुछ अलग अलग तरीकों में बातचीत करने के लिए सीखना होगा कि कैसे।
भाग 1 - एक शोकहारा API बनाना
चरण 1: स्थापना डेमो
सबसे पहले आप GitHub से codeigniter-restserver कोड डाउनलोड करें और इसे निकालने और कोड आपके सर्वर पर ले जाने के लिए की जरूरत है।



जब आप फ़ोल्डर खोलते हैं, आप एक पूरे CodeIgniter स्थापित है, जो सत्ता में डेमो है देखना होगा। यह लोगों को अपने मौजूदा अनुप्रयोग के साथ घालमेल करने से पहले बाकी डेमो के साथ खेलने के लिए अनुमति देता है।
"Application/config/config.php अप" खोलें और base_url लिंक काम कर पाने के लिए सेट करें। इस base_url हर किसी के लिए अलग अलग हो जाएगा और पूरी तरह से जहाँ आप अपनी फ़ाइलें अपलोड की गई पर निर्भर करता है।



चरण 2: यूआरएल
निकाली गई फ़ाइलों और base_url के सेट के साथ, हम हमारे शोकहारा CodeIgniter स्थापना अप लोड, और इसके साथ आपूर्ति की डेमो पर एक नज़र है करने के लिए तैयार कर रहे हैं। आधार URL है जो डिफ़ॉल्ट रूप से, ब्राउज़ करें:
https://localhost/restserver
यहाँ आप example_api नियंत्रक, जो "application/controllers/example_api.php" में पाया जा सकता है के कुछ उदाहरण लिंक मिल जाएगा। चलो देखते हैं पर क्या हो रहा है यूआरएल की इन उदाहरणों के टुकड़े करना। पहली URL एक बहुत ही आसान है।



इस URL किसी भी अन्य CodeIgniter URL के साथ एक नियंत्रक और एक विधि की तरह बहुत लग रहा है, लेकिन आप इस आरेख में विधि एक "संसाधन" नाम दिया गया है नोटिस जाएगा। बाकी सब संसाधनों के बारे में है और (वे अनिवार्य रूप से आपके आवेदन के भीतर एक संज्ञा जिसके साथ interacted हैं अर्थात जोड़ा, हटाया, संपादित, पूछे) HTTP हेडर और यूआरएल क्वेरी स्ट्रिंग्स या HTTP तर्कों पर आधारित हैं।
जो है क्या हम इस बुनियादी उदाहरण में देखें XML आउटपुट के लिए डिफ़ॉल्ट स्वरूप है। अन्य लिंक थोड़ा बड़ा कर रहे हैं और प्रदर्शन मानकों से गुजारें और दिखाने के कैसे आउटपुट स्वरूप यूआरएल में संशोधित किया जा सकता करने के लिए कैसे:



CodeIgniter, में सामान्य रूप से आप बस में पैरामीटर मान से गुजारें, लेकिन एक नियंत्रक के बाकी किसी भी क्रम में पैरामीटर के किसी भी संख्या स्वीकार करता है। इस के लिए काम करने के लिए, हम नाम पैरामीटर के जोड़े में मूल्य द्वारा पीछा किया पर से गुजारें की जरूरत है।
URL के अंत में "स्वरूप" पैरामीटर है। यह एक आरक्षित पैरामीटर आउटपुट स्वरूप का अनुरोध की गई डेटा को संशोधित करेंगे है जैसे इतना:



दोनों API डेवलपर और उपयोग करने के लिए क्लाइंट अनुप्रयोग विकल्प डेटा प्रारूपों की देकर, एपीआई एक बहुत व्यापक दर्शकों के लिए खोल दिया है और अधिक प्रोग्रामिंग भाषाओं और प्रणालियों के साथ इस्तेमाल किया जा सकता। इन तीनों ही प्रारूपों, अपने बाकी एपीआई का उपयोग कर सकते हैं बाहर बॉक्स समर्थित नहीं हैं:
- xml - XML लगभग किसी भी प्रोग्रामिंग भाषा पढ़ सकते हैं
- json - जावास्क्रिप्ट और तेजी से PHP apps के लिए उपयोगी।
- csv - स्प्रेडशीट प्रोग्राम्स के साथ खुला
- html - एक सरल HTML तालिका
- php - PHP का प्रतिनिधित्व कोड है कि हो सकता है eval () ' एड
- serialize - श्रृंखलाबद्ध डेटा कि unserialized PHP में किया जा सकता
जबकि प्रारूप करने के लिए यूआरएल जोड़ने के तकनीकी रूप से सबसे अधिक शोकहारा तरीका स्वरूपों को बदल नहीं है, यह आसान ब्राउज़र परीक्षण के लिए अनुमति देता है और देता है डेवलपर्स एपीआई पर सरल प्राप्त अनुरोधों का प्रदर्शन कर्ल के बिना। बाकी नियंत्रक कर्ल का उपयोग करने के लिए कोई सामग्री प्रकार HTTP शीर्ष लेख भेजने के लिए और अधिक शोकहारा तरीका है, लेकिन कि बाद में समझाया जाएगा।
चरण 3: कोड
अगर आप आप application/controllers/example_api.php अप खोलें अब तुरंत में सामान्य CodeIgniter नियंत्रकों से कुछ मतभेद हाजिर होंगे।
REST_Controller
MVC पैटर्न में, एक नियंत्रक तर्क के केंद्रीय बिंदु है। यह कहा जाता है जब एक प्रयोक्ता एक अनुरोध बनाता है और तब कंट्रोलर में तर्क यह छा डेटा और outputs विचारों के आधार पर। CodeIgniter कैसे एक नियंत्रक काम करना चाहिए के लिए अपने तर्क होते हैं, लेकिन तर्क की अपनी बाकी शामिल करने के लिए हमारे अपने REST_Controller पुस्तकालय से संबंधित के रूप में हम कुछ अलग की जरूरत है हम कर रहे हैं। तो बस के बजाय का उपयोग कर:
<?php class Example_api extends Controller { }
.. जीने का उपयोग करने की आवश्यकता होगी:
<?php require(APPPATH'.libraries/REST_Controller.php'); class Example_api extends REST_Controller { }
संसाधनों के साथ कार्य करना
अब अपने खाली नियंत्रक सेट अप है, अगले विधियों या "संसाधन" हैं। यदि आप CodeIgniter कैसे काम करता है के लिए इस्तेमाल किया कर रहे हैं इस prossibly ट्यूटोरियल का सबसे भ्रमित हिस्सा है। असल में, आप संसाधन और HTTP क्रिया ले और उन्हें एक विधि नाम बनाने के लिए गठबंधन। ताकि एक संसाधन के उपयोगकर्ता और उपयोगकर्ता के दो उदाहरण हम पहले देखा था। क्योंकि इन दोनों के ब्राउज़र में भरी हुई थे, हम जानते हैं यह एक अनुरोध प्राप्त कर रहा था और इतना नीचे दो तरीके इस्तेमाल कर रहे हैं:
<?php require(APPPATH'.libraries/REST_Controller.php'); class Example_api extends REST_Controller { function user_get() { // respond with information about a user } function users_get() { // respond with information about several users } }
यह थोड़ा अजीब लग सकता है, लेकिन इसे आप एक ही URL का उपयोग करें और इस्तेमाल किया गया है HTTP क्रिया के आधार पर अनुरोध पर प्रतिक्रिया करने की क्षमता देता है। अगर किसी को एक रास्ता है कि अनुमति नहीं है में अपने एपीआई का उपयोग करने के लिए कोशिश करता है (इस उदाहरण में डाल या DELETE) यह बस एक 404 के साथ जवाब देगी। यदि आप HTTP verbs के बारे में सुनिश्चित नहीं हैं, मुझे समझाओ।
GET
एक मौजूदा संसाधन के बारे में जानकारी लेने के लिए इस्तेमाल किया। जब आप एक URL एंटर करते हैं और हिट करते हैं, या जब आप किसी लिंक पर क्लिक करते हैं तो ब्राउज़र द्वारा इसका उपयोग किया जाता है, इसलिए यह आपके REST रिसोर्सेज (जैसे यूजर) पर जानकारी लाने के लिए सही है।
POST
जानकारी के साथ मौजूदा रिसोर्स को अपडेट करने के लिए प्रयुक्त होता है। ब्राउज़र इंटरनेट पर अधिकांश टाइप के फॉर्म सबमिट करने के लिए इसका उपयोग करते हैं, हालांकि कुछ फ़ील्ड डेटा वाले क्वेरी स्ट्रिंग के साथ फ़ॉर्म एक्शन सबमिट करके GET का भी उपयोग करते हैं।
PUT
अधिकांश ब्राउज़रों द्वारा कम इस्तेमाल किया जाता है और सपोर्टेड नहीं है, PUT का उपयोग एक नया रिसोर्स बनाने के लिए किया जाता है।
DELETE
कई ब्राउज़रों द्वारा भी इसका उपयोग नहीं किया जाता है, यह HTTP वर्ब स्पष्ट रूप से रिसोर्स को हटाने के लिए उपयोग की जाती है।
अगर हम इसे कोड में रखते हैं और रिसोर्स user पर प्रत्येक वर्ब को अनुमति देते हैं तो यह इस तरह दिखेगा:
<?php require(APPPATH'.libraries/REST_Controller.php'); class Example_api extends REST_Controller { function user_get() { // respond with information about a user } function user_put() { // create a new user and respond with a status/errors } function user_post() { // update an existing user and respond with a status/errors } function user_delete() { // delete a user and respond with a status/errors } }
पैरामीटर एक्सेस करना और डेटा रीटर्न करना
तो अब API को रिसोर्स सेटअप करने और प्रत्येक HTTP वर्ब के लिए एक मेथड को परिभाषित करके अपना स्ट्रक्चर दिया गया है जिसे हम सपोर्ट देना चाहते हैं; हमें पैरामीटर की आवश्यकता है ताकि हम अपने CodeIgniter मॉडल और लाइब्रेरीज का उपयोग कर सकें। यह हमारे API के लिए CodeIgniter का उपयोग करने के प्रमुख लाभों में से एक है, क्योंकि हम अपने मौजूदा मॉडल और लाइब्रेरीज का उपयोग कर सकते हैं और उन्हें फिर से कोड नहीं करना पड़ता है।
<?php require(APPPATH'.libraries/REST_Controller.php'); class Example_api extends REST_Controller { function user_get() { $data = array('returned: '. $this->get('id')); $this->response($data); } function user_post() { $data = array('returned: '. $this->post('id')); $this->response($data); } function user_put() { $data = array('returned: '. $this->put('id')); $this->response($data; } function user_delete() { $data = array('returned: '. $this->delete('id')); $this->response($data); } }
इस उदाहरण में कोड के पांच नए पीस हैं:
$this->get()
इस index.php/example_api/user?id = 1 जैसे किसी क्वेरी स्ट्रिंग से GET वेरिएबल को रीटर्न करने के लिए उपयोग किया जाता है या index.php/example_api/user/id/1 के साथ अधिक CodeIgniter'esque तरीके में सेट किया जा सकता है।
$this->post()
यह $this->input->post() के लिए अलियास (उपनाम) है जो XSS सुरक्षा के साथ $_POST वेरिएबल्स तक पहुंचने के लिए CodeIgniter का मेथड है।
$this->put()
HTTP हेडर में या cURL के माध्यम से सेट PUT आर्ग्यूमेंट्स में पढ़ता है।
$this->delete()
आपने अनुमान लगा लिया है, यह DELETE आर्गुमेंट में पढ़ता है, HTTP हेडर में या cURL के माध्यम से भी सेट है।
$this->response()
ब्राउज़र में डेटा को जो भी डेटा फॉर्मेट रिक्वेस्ट किया गया है, या XML के लिए डिफ़ॉल्ट भेजता है। यह वैकल्पिक रूप से एक HTTP स्टेटस कोड पास कर सकता है यह दिखाने के लिए कि यह काम करता है या विफल रहा है। उदाहरण. यदि प्रदान की गई id डेटाबेस में नहीं थी, तो आप $this->response (array('error' => 'User not found'), 404) का उपयोग कर सकते हैं;
स्टेप 4: अपने मॉडल के साथ काम करना
अब तक, हम एक क्लीन इनस्टॉल में एक उदाहरण API के साथ काम कर रहे हैं। तो अगला स्टेप आपके मौजूदा कोडबेस से एक REST API चलाना है।

हालांकि डाउनलोड डेमो के लिए पूर्ण कोड CodeIgniter इंस्टॉलेशन के साथ आता है और API को स्क्रैच से निर्मित करने की अनुमति देने के लिए, केवल दो फाइलें महत्वपूर्ण हैं:
- application/config/rest.php
- application/libraries/REST_Controller.php
उन दो फ़ाइलों को अपने CodeIgniter एप्लिकेशन में छोड़ दें और एक नया API कंट्रोलर बनाएं।
<?php require(APPPATH.'/libraries/REST_Controller.php'); class Api extends REST_Controller { function user_get() { if(!$this->get('id')) { $this->response(NULL, 400); } $user = $this->user_model->get( $this->get('id') ); if($user) { $this->response($user, 200); // 200 being the HTTP response code } else { $this->response(NULL, 404); } } function user_post() { $result = $this->user_model->update( $this->post('id'), array( 'name' => $this->post('name'), 'email' => $this->post('email') )); if($result === FALSE) { $this->response(array('status' => 'failed')); } else { $this->response(array('status' => 'success')); } } function users_get() { $users = $this->user_model->get_all(); if($users) { $this->response($users, 200); } else { $this->response(NULL, 404); } } } ?>
यह कुछ सामान्य मॉडल नामों के साथ एक उदाहरण API दिखाता है। पहले मेथड में, हम एक ?id=XX को पिक रहे हैं और इसे मॉडल में पास कर रहे हैं। यदि डेटा मिल जाता है तो हम इसे $200 के साथ this->response() फ़ंक्शन पर भेजते हैं। यदि कुछ भी नहीं मिलता है, तो कोई भी बॉडी और 404 कहने के लिए कुछ भी नहीं मिला। आप कल्पना कर सकते हैं कि यह आपके वेब एप्लिकेशन के लिए सभी टाइप की API गतिविधियां को चलाने के लिए कैसे एक्सपैंड किया जा सकता है।
step 5: API सुरक्षित करना
अब आपकी API बन गयी है, इसे सुरक्षित करने की आवश्यकता है, इसलिए यह केवल यूज़र्स द्वारा दी गई पहुंच API के साथ इंटरैक्ट कर सकती है। लॉगिन टाइप सेट करने के लिए, यूजरनेम और पासवर्ड आपके कोडबेस के अंदर "application/config/rest.php" खोलें।
/* |-------------------------------------------------------------------------- | REST Login |-------------------------------------------------------------------------- | | Is login required and if so, which type of login? | | '' = no login required, 'basic' = relatively secure login, 'digest' = secure login | */ $config['rest_auth'] = 'basic';
None
कोई भी आपके API कंट्रोलर्स में से किसी एक के साथ इंटरैक्ट कर सकता है।
Basic
एक अपेक्षाकृत असुरक्षित लॉगिन मेथड जिसका उपयोग केवल आंतरिक/सुरक्षित नेटवर्क पर किया जाना चाहिए।
Digest
एक और अधिक सुरक्षित लॉगिन मेथड जो यूजरनेम और पासवर्ड को एन्क्रिप्ट करता है। यदि आप एक सुरक्षित API रखना चाहते हैं जो कोई भी प्राप्त कर सके, डाइजेस्ट का उपयोग करें।
/* |-------------------------------------------------------------------------- | REST Login usernames |-------------------------------------------------------------------------- | | Array of usernames and passwords for login | | array('admin' => '1234') | */ $config['rest_valid_logins'] = array('admin' => '1234');
यूज़र्स को सेटअप करना सरल है। प्रत्येक लॉगिन एक key और एक वैल्यू के साथ एक ऐरे आइटम है। key यूजरनेम है और वैल्यू पासवर्ड है। जितना आप इस ऐरे को पसंद करते हैं उन्हें जोड़ें और API का उपयोग करने वाले किसी भी व्यक्ति को डिश करें।
पार्ट 2 - RESTful सर्विसेज के साथ इंटरैक्ट
चाहे वह API है जिसे आपने अभी बनाया है या ट्विटर जैसी पब्लिक सर्विस है, आप किसी भी तरह से इसके साथ इंटरैक्ट करने में सक्षम होना चाहेंगे। बेसिक HTTP रिक्वेस्ट्स के साथ RESTful सर्विस के रूप में देखकर इसे कई अलग-अलग तरीकों से करना बहुत आसान है।
REST के साथ इंटरैक्ट करने के लिए विभिन्न मेथड्स
इनमें से प्रत्येक अलग-अलग इंटरैक्शन मेथड्स को सीधे कंट्रोलर मेथड्स में रखे गए कोड के साथ दिखाया जाएगा। यह पूरी तरह से इसलिए है कि डेमो पढ़ने के लिए आसान हैं और सामान्य रूप से एक मॉडल या लाइब्रेरी के अंदर सही MVC अलगाव के लिए रखा जाएगा।
file_get_contents()
बहुत ही सरल PHP फ़ंक्शन file_get_contents() का उपयोग करके, आप बेसिक GET रिक्वेस्ट कर सकते हैं। यह सभी मेथड्स में से सबसे बेसिक है लेकिन उन "क्विक और डर्टी" मूमेंट्स के लिए उल्लेखनीय है।
$user = json_decode( file_get_contents('http://example.com/index.php/api/user/id/1/format/json') ); echo $user->name;
यह ध्यान देने योग्य है कि, जबकि यह मेथड HTTP डायजेस्ट ऑथेंटिकेशन का उपयोग नहीं करेगी, यदि आप HTTP बेसिक ऑथेंटिकेशन का उपयोग कर रहे हैं तो आप अपने पासवर्ड से डेटा प्राप्त करने के लिए निम्न सिंटेक्स का उपयोग कर सकते हैं RESTful API:
$user = json_decode( file_get_contents('http://admin:1234@example.com/index.php/api/user/id/1/format/json') ); echo $user->name;
इस मेथड का उपयोग करने में कुछ समस्याएं हैं: अतिरिक्त HTTP हैंडर्स सेट करने का एकमात्र तरीका उन्हें PHP फ़ंक्शन stream_context_create() का उपयोग करके मैन्युअल रूप से सेट करना है, जो HTTP रिक्वेस्ट्स के आंतरिक कार्यों के लिए नए डेवलपर्स के लिए बहुत जटिल हो सकता है। एक और नुकसान यह है कि आप केवल अपने raw फॉर्मेट में HTTP रिस्पांस का बॉडी प्राप्त करते हैं, जिसका अर्थ है कि आपको एक ही रिक्वेस्ट से कन्वर्शन को संभालने की आवश्यकता है।
cURL
एक REST API के साथ इंटरैक्ट करने के लिए cURL सबसे लचीला तरीका है क्योंकि यह बिल्कुल इस तरह की चीज़ के लिए डिज़ाइन किया गया था। आप HTTP हैंडर्स, HTTP पैरामीटर और भी बहुत कुछ सेट कर सकते हैं। POST रिक्वेस्ट करने के लिए हमारे example_api और cURL के साथ यूजर को अपडेट करने का उदाहरण यहां दिया गया है:
function native_curl($new_name, $new_email) { $username = 'admin'; $password = '1234'; // Alternative JSON version // $url = 'http://twitter.com/statuses/update.json'; // Set up and execute the curl process $curl_handle = curl_init(); curl_setopt($curl_handle, CURLOPT_URL, 'http://localhost/restserver/index.php/example_api/user/id/1/format/json'); curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl_handle, CURLOPT_POST, 1); curl_setopt($curl_handle, CURLOPT_POSTFIELDS, array( 'name' => $new_name, 'email' => $new_email )); // Optional, delete this line if your API is open curl_setopt($curl_handle, CURLOPT_USERPWD, $username . ':' . $password); $buffer = curl_exec($curl_handle); curl_close($curl_handle); $result = json_decode($buffer); if(isset($result->status) && $result->status == 'success') { echo 'User has been updated.'; } else { echo 'Something has gone wrong'; } }
अपने API के साथ इंटरैक्ट करना इस तरह से ठीक काम करता है, लेकिन इस मेथड के साथ दो समस्याएं हैं:
- यह एक अग्ली भ्रमित सिंटेक्स का उपयोग करता है - उस पर आधारित कई एप्लिकेशन बनाने की कल्पना करें।
- डिफ़ॉल्ट रूप से सभी सर्वरों पर cURL इनस्टॉल नहीं है।
इस अग्ली सिंटेक्स को हल करने के लिए, CodeIgniter के लिए एक cURL लाइब्रेरी विकसित की गई है जो चीजों को बहुत सरल बनाती है।
cURL लाइब्रेरी के साथ की गयी बिलकुल वही रिक्वेस्ट इस तरह दिखेगी:
function ci_curl($new_name, $new_email) { $username = 'admin'; $password = '1234'; $this->load->library('curl'); $this->curl->create('http://localhost/restserver/index.php/example_api/user/id/1/format/json'); // Optional, delete this line if your API is open $this->curl->http_login($username, $password); $this->curl->post(array( 'name' => $new_name, 'email' => $new_email )); $result = json_decode($this->curl->execute()); if(isset($result->status) && $result->status == 'success') { echo 'User has been updated.'; } else { echo 'Something has gone wrong'; } }
राइट देखने के लिए बहुत अच्छा है? वैसे आपके CodeIgniter ऍप्लिकेशन्स में REST के साथ काम करने के लिए एक और आसान तरीका है।
REST क्लाइंट लाइब्रेरी
एक REST क्लाइंट लाइब्रेरी विकसित की गई है जो इस cURL लाइब्रेरी के शीर्ष पर बैठती है जो फॉर्मेट कन्वर्शन, HTTP लॉग इन और आपके REST API के कई अन्य पहलुओं को संभालती है।
function rest_client_example($id) { $this->load->library('rest', array( 'server' => 'http://localhost/restserver/index.php/example_api/', 'http_user' => 'admin', 'http_pass' => '1234', 'http_auth' => 'basic' // or 'digest' )); $user = $this->rest->get('user', array('id' => $id), 'json'); echo $user->name; }
यहां आप देख सकते हैं कि हम एक GET रिक्वेस्ट कर रहे हैं, id को पैरामीटर के रूप में भेज रहे हैं और लाइब्रेरी को बता रहे हैं कि हम कंटेंट फॉर्मेट के रूप में 'json' चाहते हैं। यह आपके लिए Content-type की सेटिंग को संभालता है, और डेटा को आपके लिए एक PHP ऑब्जेक्ट में परिवर्तित करता है। आप इस वैल्यू को 'xml', 'json', 'serialize', 'php', 'csv' या किसी भी कस्टम MIME-type में बदल सकते हैं, उदाहरण के लिए:
$user = $this->rest->get('user', array('id' => $id), 'application/json');
जैसा कि आपने शायद अनुमान लगाया है और साथ ही $this->rest->get(), लाइब्रेरी भी $this->rest->post(), $this->rest->put(), $ this->rest->delete() को भी अपने सभी REST_Controller मेथड्स से मेल खाने के लिए सपोर्ट करती है।
यह सुनिश्चित करने के लिए कि आपको सही डेटा फॉर्मेट वापस मिल रहा है, आपको REST क्लाइंट लाइब्रेरी से आने वाले var_dump() परिणामों की आवश्यकता होगी। कन्वर्शन कभी-कभी ऐरे होगा और कभी-कभी एक ऑब्जेक्ट हो, इस पर निर्भर करता है कि इसे PHP द्वारा कैसे परिवर्तित किया जाता है। यदि लौटा हुआ MIME-type सपोर्टेड नहीं है तो यह फॉर्मेट को सादे-टेक्स्ट के रूप में वापस कर देगा।
ट्विटर से बात करना
इस REST लाइब्रेरी का उपयोग करके आप अन्य RESTful सर्विसेज जैसे ट्विटर और फेसबुक से टॉक कर सकते हैं। ट्विटर का डिफ़ॉल्ट फॉर्मेट XML का उपयोग करके, आप अपने id के आधार पर एक स्पेसफिक यूजर के विवरण कैसे प्राप्त कर सकते हैं इसका एक सरल उदाहरण यहां दिया गया है।
$this->load->library('rest', array('server' => 'http://twitter.com/')); $user = $this->rest->get('users/show', array('screen_name' => 'philsturgeon'));
$this->load->library('rest', array( 'server' => 'http://twitter.com/', 'http_user' => 'username', 'http_pass' => 'password', 'http_auth' => 'basic' )); $user = $this->rest->post('statuses/update.json', array('status' => 'Using the REST client to do stuff'));
इसे देखते हुए, आप देखेंगे कि ट्विटर API के साथ इंटरैक्ट करना कुछ तरीकों से थोड़ा अलग है।
- वे /format/json के बजाय .json के रूप में URL आधारित फॉर्मेट स्विचिंग का सपोर्ट करते हैं। कुछ को एक एक्सटेंशन की आवश्यकता है, कुछ को नहीं; तो हमेशा उन्हें जोड़ने सबसे अच्छा है।
- वे ज्यादातर GET/POST का सपोर्ट करते हैं, लेकिन अधिक DELETE मेथड्स को जोड़ना शुरू कर रहे हैं
- उनके पास हमेशा उनके URL में रिसोर्स नहीं होता है, उदाहरण के लिए: user/search एक REST मेथड है, लेकिन lists एक और है।
इन मतभेदों के लिए नजर रखें क्योंकि वे आपको अटका सकते हैं। यदि आप अटक जाते हैं, तो बस अपने REST रिक्वेस्ट पर जानकारी की पूरी सीरीज के लिए $this->rest->debug() को echo करें।
सारांश
RESTful सर्विसेज, CodeIgniter REST क्लाइंट लाइब्रेरी और ट्विटर API डॉक्यूमेंटेशन - या उस मामले के लिए कोई अन्य RESTful API डॉक्यूमेंटेशन के बारे में अब आप जो जानते हैं उसे जोड़ना - आप REST का उपयोग कर किसी भी कस्टम या पब्लिक वेब सर्विस के साथ इंटेग्रट कर कुछ बहुत शक्तिशाली एप्लिकेशन बना सकते हैं। आप अपने API को अपने एप्लिकेशन के रूप में व्यवस्थित रूप से व्यवस्थित रखने में मदद के लिए प्रत्येक मॉड्यूल के लिए api.php कंट्रोलर बनाने के लिए Matchbox या Modular Separation का उपयोग कर मॉड्यूलर API बनाकर और अधिक मॉड्यूलर API बना सकते हैं।
एक प्लस टुटोरिअल लिखें
क्या आप जानते थे कि आप हमारे लिए प्लस ट्यूटोरियल और/या स्क्रीनकास्ट लिखने के लिए $600 तक कमा सकते हैं? हम HTML, CSS, PHP, और जावास्क्रिप्ट पर गहराई से और अच्छी तरह लिखित ट्यूटोरियल की तलाश में हैं। यदि आप क्षमता रखते हैं, तो कृपया netfuts@tutsplus.com पर जेफरी से संपर्क करें।
कृपया ध्यान दें कि वास्तविक मुआवजे अंतिम ट्यूटोरियल और स्क्रीनकास्ट की गुणवत्ता पर निर्भर करेगा।
- ट्विटर पर हमें फ़ॉलो करें, या वेब पर सर्वोत्तम वेब डेवलपमेंट ट्यूटोरियल के लिए Nettuts+ RSS फ़ीड की मेम्बरशिप लें।