REST API कैसे लिखें?


82

मैं एक शौक परियोजना के रूप में एक iPhone ऐप लिख रहा हूं और इसे डेटा प्रदान करने के लिए एक वेब सेवा की आवश्यकता होगी। मैं काम पर क्या करता हूं, यह बहुत अलग नहीं है, लेकिन काम पर मैं केवल विचार और नियंत्रक लिखता हूं। मॉडल लिखने के लिए कोई और जिम्मेदार है और आमतौर पर ग्राहक वेब सेवा प्रदान करते हैं।

मैंने पहले भी कुछ वेब प्रोग्रामिंग की है, जब हर कोई MySQL और PHP का उपयोग कर रहा था, तो मेरे कौशल थोड़े पुराने हैं, लेकिन मुझे विश्वास है कि मैं उन तकनीकों का उपयोग करने में सक्षम होऊंगा जिन्हें मैं पहले से जानता हूं। हालाँकि, मैं अप्रचलित साधनों का उपयोग करके अपना समय बर्बाद नहीं करना चाहता। मुझे पता चला है कि कला की स्थिति एक REST API लिखने की होगी। मैं सोच रहा था कि वहाँ कुछ बहुत अच्छी रूपरेखाएँ होनी चाहिए जो कि बहुत हद तक आपको एक मॉडल के रूप में परिभाषित करते ही CRUD कार्यक्षमता के साथ एक REST API देती हैं।

मुझे लगता है कि मेरा सवाल है: REST API प्राप्त करने और चलाने का सबसे तेज़ तरीका क्या होगा? मैं वास्तव में केवल iPhone ऐप लिखने पर ध्यान केंद्रित करना चाहता हूं और इस एपीआई पर बहुत अधिक समय खर्च नहीं करता हूं। यह बहुत अच्छा होगा यदि मुझे वेब प्रशासन और संशोधन इतिहास मिल सके। मुझे यह भी जोड़ना चाहिए कि एपीआई सार्वजनिक नहीं होना चाहिए, इसलिए प्रमाणीकरण के लिए समर्थन बहुत अच्छा होगा।

केवल स्पष्ट करने के लिए। मुझे PHP फ्रेमवर्क बुरा नहीं लगेगा। वास्तव में यह संभवतः बेहतर हो सकता है क्योंकि मुझे पता है कि मेरी वर्तमान होस्टिंग इसका समर्थन करती है।


1
REST संभवतः वह नहीं है जो आप वास्तव में चाहते हैं: medium.com/@trevorhreed/…
ट्रेवर

2
आप इस 66 लाइन PHP स्क्रिप्ट का उपयोग कर सकते हैं जो मैंने लिखा था।
18

5 साल बाद जवाब दिया 8-)
JustOnUnderMillions

जवाबों:


42

संपादित करें:

नीचे दिए गए लिंक, जो जाहिरा तौर पर 3 साल के लिए अच्छे थे, अब काम नहीं कर रहे हैं इसलिए मैंने जाकर कुछ नए ट्यूटोरियल ढूंढे, जो मुझे लगता है कि थोड़ी देर के लिए इधर-उधर चिपके रहेंगे। ये रे वेंडरलिच साइट पर हैं, एक बहुत अच्छी तरह से सम्मानित आईओएस देव ट्यूटोरियल साइट है। पहला लेख वास्तव में नीचे दिए गए टूटे हुए लिंक को संदर्भित करता है लेकिन यह अपने आप में पूर्ण है:

IOS ऐप के लिए एक साधारण PHP / MySQL वेब सेवा कैसे लिखें

और दूसरे ने इसे थोड़ा मोड़ दिया है। यह बैकएंड और AFNetworking पर parse.com का उपयोग करता है। जो दोनों ही काफी बेहतरीन हैं।

कैसे एक वेब सेवा के साथ कोर डेटा सिंक्रनाइज़ करने के लिए - भाग 1


मैंने जिस तरह से वापस मशीन में लेख ढूंढकर नीचे दिए गए टूटे हुए लिंक को ठीक किया है। लोग लिंक को पसंद करने लगते हैं इसलिए मैं उन्हें रखूंगा। उपरोक्त लिंक को विचार के लिए अधिक भोजन प्रदान करना चाहिए।


मैं अपने iPhone ऐप के साथ बिल्कुल यही काम कर रहा हूं। मुझे PHP में एक RESTful API बनाने पर यह लेख मिला:

https://web.archive.org/web/20130910164802/http://www.gen-x-design.com/archives/create-a-rest-api-with-php/

और यहाँ एक अनुवर्ती लेख भी है:

https://web.archive.org/web/20130323001500/http://www.gen-x-design.com/archives/making-restful-requests-in-php/

लेख के नीचे स्रोत कोड के लिंक के साथ।


2
ये लिंक ऐसा लगता है जैसे वे अभी बाहर कर रहे हैं। अगर ऐसा किसी और के लिए हो रहा है तो मुझे यकीन नहीं है। : /
ऑग्गी गार्डनर

8

मैंने Zend_Rest_Controller का उपयोग करके ZEND फ्रेमवर्क में REST API प्रोग्राम किया है, iPhone पर मैंने ASIHTTPRequest का उपयोग किया है । दोनों के साथ मेरा अनुभव जहां अच्छा रहा। शुरुआत में मुझे ZEND सेट करने और इसे mySQL से जोड़ने में कुछ परेशानी हुई, लेकिन एक बार मुझे यह पता चल गया कि यह कैसे करना है कि मैं बहुत तेज़ी से एपीआई लिखने में सक्षम था। यदि आपके कोई और प्रश्न हों तो मैं आपके साथ अधिक जानकारी साझा कर सकता हूं।

संपादित करें: ऐसा लगता है कि कोई आधिकारिक दस्तावेज नहीं है Zend_Rest_Controllerइस लिंक का वर्णन है कि इसका उपयोग अपने एपीआई बनाने के लिए कैसे करें। आपको बस init()अपने उपवर्ग में रेंडरिंग को निष्क्रिय करना होगा और प्रत्येक रीस्ट कॉल के तरीकों को लागू करना होगा।


मैं Zend साइट पर किसी भी ZEND_Rest_Controller नहीं देखता। मुझे ZEND_Rest_Server दिखाई देता है। यह वही है जिसके बारे में आप बात कर रहे हैं?
दिमित्री

2
यहाँ कैसे zend_rest_controller का उपयोग करने पर एक अच्छी शुरुआत के लिए एक नज़र: techchorus.net/create-restful-applications-using-zend-framework एक आराम एपीआई .creating इस वर्ग के साथ सरल है
फिलिप

ऐसा लगता है कि मुझे कमोबेश वही चाहिए जो मुझे चाहिए। मैं इसे आज़माऊँगा और अगर मैं सफल रहा तो मैं इसे अपने उत्तर के रूप में स्वीकार करूँगा। धन्यवाद।
एरिक बी

4
मुझे लगता है कि वह सफल नहीं था ...: D
user151841

8

बस आपको यह बताने के लिए:

मैंने रूबी ऑन रेल्स का उपयोग किया।

EDIT: चूंकि यह जवाब रूबी को रेल्स पर चुनने के पीछे का कारण बताने के लिए नहीं दिया गया है और इसके साथ REST एपीआई लिखने के बारे में कोई निर्देश नहीं है, इसलिए मैंने सोचा कि मैं आपको अपनी प्रेरणा और कुछ सरल निर्देश दूंगा।

मैंने रूबी ऑन रेल्स के बारे में एक किताब पढ़ना शुरू किया और महसूस किया कि मुझे जो कुछ भी करने की ज़रूरत थी वह मचान का उपयोग करना था और मुझे मुफ्त में JSON REST API मिल गया।

यहां आपको आरंभ करने के लिए एक अच्छा मार्गदर्शक है: http://guides.rubyonrails.org/getting_started.html

जब आप अपने रूबी रेल्स पर्यावरण पर चल रहे हैं और चल रहे हैं, तो आपके REST API को बनाना रनिंग से अधिक कठिन नहीं है:

$ rails generate scaffold Post name:string title:string content:text

(उपर्युक्त लिंक से उदाहरण।) मैंने यह भी पाया कि रेल बहुत आसान और मुफ्त के लिए हैकोको को तैनात करने का , जिसका मतलब है कि मुझे अपने मूल, कम यातायात, आरएएसटी एपीआई के लिए होस्टिंग के लिए भुगतान नहीं करना पड़ेगा। कई अन्य कारण हैं कि मैं रूबी के साथ रेल पर काम करके बहुत खुश हूं, लेकिन यह इस प्रश्न के संदर्भ से परे है।


10
अपने आप को एक जवाब दे रहा है और फिर इसे एक चेकमार्क खराब फॉर्म दे रहा है आदमी बहुत बुरा रूप है।
तत्पश्चात

29
@thenetimp आपके अपने प्रश्न का उत्तर देने में कुछ भी बुरा नहीं है। वास्तव में यह प्रोत्साहित किया जाता है, जब तक कि यह एक सही उत्तर है और यह किसी और द्वारा नहीं दिया गया है। आप अपने स्वयं के उत्तर को स्वीकार करने के लिए कोई प्रतिनिधि नहीं प्राप्त करते हैं, इसलिए मैं वास्तव में यह नहीं देखता कि आप इसके खिलाफ क्या कर सकते हैं
एरिक बी

3
बेहतर होगा यदि आप इसे चुनने के लिए अपना तर्क दें
मुस्तफा

4
@ नहीं मैं रूबी को REST API लिखने की इच्छा रखने वाले किसी भी व्यक्ति को रूबी की सलाह दूंगा, इसलिए मैं अपना उत्तर नहीं हटाऊंगा। हालाँकि, मैंने आपकी प्रतिक्रिया पढ़ी और अपना उत्तर अपडेट किया। मुझे आशा है कि यह आपको प्रसन्न करेगा।
एरिक बी

2
@ DennisKrøger अगर यह सवाल है कि "REST एपी कैसे लिखें?" फिर "मैंने RoR का उपयोग किया। यहां उनके मचान पर आरंभ करने के लिए एक गाइड है" पूरी तरह से एक उचित उत्तर है।
Mattygabe

8

मैंने PHP के साथ RESTful API बनाने के लिए एक बहुत ही सरल ट्यूटोरियल का अनुसरण किया:

कोरी मेनार्ड - PHP के साथ एक प्रतिष्ठित एपीआई बनाना

मुख्य अवधारणा में शामिल हैं:

  • एक सार वर्ग जो URI के पार्सिंग को हैंडल करता है और प्रतिक्रिया देता है, और
  • एक ठोस वर्ग जिसमें एपीआई के लिए सिर्फ समापन बिंदु होते हैं।

3

अजगर के बारे में क्या?

मैं अजगर, Django और पिस्टन का उपयोग करेंगे।

  1. मैं इंस्पेक्टरडब का उपयोग करके आपके अस्तित्व के डीबी से Django मॉडल उत्पन्न करूंगा
  2. Django व्यवस्थापक को अपने मॉडल में जोड़ें ।
  3. अपने ऐप में Django पिस्टन जोड़ें ।
  4. फायदा।

पायथन या Django के साथ कोई अनुभव नहीं होने के साथ शायद आपको इस समाधान को विकसित करने के लिए एक दिन लगेगा और सभी कोड यूनिट परीक्षण किए गए और काम करने के लिए साबित हुए हैं



1

निम्नलिखित PHP वर्ग की जाँच करें जो MVC का अनुसरण करता है। http://www.phpclasses.org/package/5080-PHP-Implement-REST-Web-services-servers.html

उम्मीद है की यह मदद करेगा।


7
मैं phpclasses.org की किसी भी चीज़ का उपयोग करके दृढ़ता से हतोत्साहित करता हूँ। उस साइट पर कई वर्ग अप्रयुक्त, असुरक्षित हैं, जो स्क्रिप्ट किडीज़ द्वारा लिखे गए हैं। PEAR या Zend
दिमित्री

13
3000 से अधिक PHP डेवलपर्स ने PHPClasses साइट पर पैकेज सबमिट किए। कुछ दूसरों की तुलना में बहुत अधिक सक्षम हैं। कई लोग PEAR और Zend के भी योगदानकर्ता हैं। लोगों को यह बताने के लिए कि उस साइट में वितरित पैकेज का उपयोग न करें क्योंकि आपको कुछ ऐसे पैकेज मिले हैं जो आप कहते हैं कि वे अप्रयुक्त और असुरक्षित हैं, शुद्ध पूर्वाग्रह है। @Src द्वारा अनुशंसित पैकेज एक टॉप रेटेड पैकेज होता है। यदि आप पैकेज कोड या कम से कम उपयोगकर्ता रेटिंग को देखते हैं तो इससे पहले कि यह सब कुछ के खिलाफ सामान्यीकरण करने का निर्णय लिया गया था, यह समझदार होगा क्योंकि यह साइट में वितरित किया गया है।
मलेमोस

0

यदि आप पहले से ही PHP जानते हैं, तो PHP / MySQL बैकएंड के साथ कुछ भी गलत नहीं है। आप iPhone- संगत plist xml प्रारूप में सभी प्रतिक्रियाएं भेज सकते हैं, और तुरंत कोड को इस लघु स्निपेट के साथ NS सहारे / NSArray / NSNumber डेटा संरचना में प्रतिक्रिया को बदल सकते हैं:

NSString *response = [request responseString];
NSData* plistData = [response dataUsingEncoding:NSUTF8StringEncoding];
NSPropertyListFormat format;
NSString *errorStr;
NSDictionary* plist = [NSPropertyListSerialization propertyListFromData:plistData 
                                                       mutabilityOption:NSPropertyListImmutable 
                                                                 format:&format 
                                                       errorDescription:&errorStr];

मैं URL बनाने के लिए ASIHTTP पैकेज का उपयोग करता हूं, अतुल्यकालिक अनुरोध भेज रहा हूं, और प्रतिक्रियाएं प्राप्त कर रहा हूं, मैं इसकी अत्यधिक अनुशंसा करता हूं:

http://allseeing-i.com/ASIHTTPRequest/


0

आपको वेब सेवा के लिए जो भी भाषाएं सुविधाजनक हैं, उनका उपयोग करना चाहिए। कोई भी भाषा जो अनुरोधों के लिए REST प्रतिक्रियाएँ तैयार कर सकती है वह ठीक है।

उस ने कहा, यदि आप जल्दी से कुछ प्राप्त करना चाहते हैं, तो मैं सुझाव देता हूं कि Google ऐप इंजन पर पायथन का उपयोग करें। यह मुफ़्त है और आप इच्छा होने पर अजगर की जगह जावा का उपयोग कर सकते हैं। ऐप इंजन OpenID और / या Google खातों का उपयोग करके प्रमाणीकरण का समर्थन करता है (यह सुनिश्चित नहीं है कि यदि वे पारस्परिक रूप से अनन्य हैं) तो कोड को आसान बनाना चाहिए।

जहाँ तक iOS डिवाइस पर अनुरोध करने की बात है, मैं ASIHTTPRequest का उपयोग करने का सुझाव देता हूं ।


0

एक अन्य विकल्प रेस्टएसक्यूएल है, यह एक अल्ट्रा-हल्की दृढ़ता वाला ढांचा है। Http://restsql.org देखें । यह MySQL और PostgreSQL का समर्थन करता है और एक मानक जावा EE कंटेनर में चलता है, जैसे Apache Tomcat।

restSQL एक बहुत ही अपरंपरागत डेटा एक्सेस लेयर है। restSQL डेटाबेस का ऑब्जेक्ट-ओरिएंटेड व्यू नहीं है। यह संबंधपरक डेटाबेस तालिकाओं के फ्लैट या पदानुक्रमित "विचार" प्रस्तुत करता है। ये दृश्य एक सरल REST- आधारित HTTP या जावा एपीआई के माध्यम से क्वेरी-सक्षम और अद्यतन करने योग्य हैं। HTTP इंटरफ़ेस REST सिद्धांतों पर आधारित है, जो HTTP की अंतर्निहित सुविधाओं का उपयोग करते हैं, बजाय उनसे दूर रहने के।

आप 'CRUD कार्यक्षमता के साथ REST API' चाहते हैं और यह रेस्टक्यूएस की मीठी जगह है। आप बिना किसी कोड के ऐसा कर सकते हैं। बस XML फ़ाइलों के माध्यम से अपने SQL संसाधनों को परिभाषित करें और पूर्ण CRUD क्षमता के साथ उनके खिलाफ HTTP कॉल करना शुरू करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.