2011-02-11 15 views
80

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

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

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

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

+1

बाकी शायद नहीं है क्या तुम सच में चाहते हैं: https://medium.com/@trevorhreed/you-re-api-isn-t-restful-and-that-s-good-b2662079cf0e – Trevor

+2

आप इस्तेमाल कर सकते हैं [यह 66 लाइन PHP स्क्रिप्ट] (https://github.com/mevdschee/php-crud-api/blob/master/extras/core.php) मैंने लिखा था। – mevdschee

+0

उत्तर 5 साल बाद 8-) – JustOnUnderMillions

उत्तर

7

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

मैं पर रूबी का उपयोग कर समाप्त हो गया।

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

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

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

(उदाहरण: http://guides.rubyonrails.org/getting_started.html

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

यहाँ पाने के लिए एक अच्छा मार्गदर्शक आप शुरू कर दिया है ऊपर के लिंक से।) मैंने यह भी पाया है कि रेल बहुत आसान और मुक्त heroku को तैनात करने के लिए, जिसका अर्थ यह है कि मैं अपने बहुत ही बुनियादी, कम यातायात, बाकी एपीआई के लिए की मेजबानी के लिए भुगतान नहीं किया है। रूबी पर रूबी के साथ काम करने के लिए मुझे बहुत खुशी है, लेकिन यह इस सवाल के संदर्भ से परे है।

+10

स्वयं को एक उत्तर दे रहा है और फिर इसे एक चेकमार्क खराब फॉर्म मैन बहुत खराब रूप दे रहा है। – thenetimp

+28

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

+3

यह बेहतर होगा अगर आपने इसे – mustafa

0

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

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

आईओएस डिवाइस पर अनुरोध करने तक, मैं ASIHTTPRequest का उपयोग करने का सुझाव देता हूं।

3

पायथन के बारे में क्या?

मैं पाइथन, डीजेगो और पिस्टन का उपयोग करता हूं।

  1. मैं inspectdb का उपयोग कर Django मॉडल अपने विद्यमान डीबी से उत्पन्न होगी।
  2. अपने मॉडल में Django admin जोड़ें।
  3. अपने ऐप में Django Piston जोड़ें।
  4. लाभ।
अजगर या Django के साथ कोई अनुभव के साथ

शायद यह आप एक दिन ले लेंगे इस समाधान विकसित करने के लिए और सभी कोड इकाई का परीक्षण किया और proved to work है।

+1

वाह कि पिस्टन पर कोड इतना साफ दिख रहा था ... – JGallardo

1

एमवीसी का पालन करने वाले निम्न PHP वर्ग को चेकआउट करें। http://www.phpclasses.org/package/5080-PHP-Implement-REST-Web-services-servers.html

उम्मीद है कि इससे मदद मिलती है।

+7

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

+12

जैसे कहीं अधिक सम्मानित दिखें 3000 से अधिक PHP डेवलपर्स ने PHPClasses साइट पर संकुल सबमिट किए हैं। कुछ दूसरों की तुलना में अधिक सक्षम हैं। कई लोग पीयर और ज़ेंड के योगदानकर्ता भी हैं। लोगों को उस साइट में वितरित पैकेज का उपयोग न करने के लिए कहें क्योंकि आपको कुछ पैकेज मिलते हैं जो आप कहते हैं कि अनचाहे और असुरक्षित हैं, शुद्ध पूर्वाग्रह है।@ एसआरसी द्वारा पुनः संकुचित पैकेज एक शीर्ष रेटेड पैकेज होता है। यदि आप साइट पर वितरित किए गए हैं, तो सब कुछ के खिलाफ सामान्यीकृत करने का निर्णय लेने से पहले आपने पैकेज कोड या कम से कम उपयोगकर्ता रेटिंग को देखा होगा, तो यह बुद्धिमान होगा। – mlemos

0

यदि आप पहले से ही PHP जानते हैं, तो PHP/MySQL बैकएंड के साथ कुछ भी गलत नहीं है।आप iPhone संगत plist XML स्वरूप में सभी जवाब भेज सकते हैं, और तुरंत कोड के इस छोटे से टुकड़ा के साथ एक NSDictionary/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]; 

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

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

8

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

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

+0

मुझे ज़ेंड साइट पर कोई ZEND_Rest_Controller नहीं दिखाई देता है। मैं ZEND_Rest_Server देखता हूं। क्या आप इस बारे में बात कर रहे हैं? – Dmitri

+2

zend_rest_controller का उपयोग करने के तरीके पर अच्छी शुरुआत के लिए यहां एक नज़र डालें: http://techchorus.net/create-restful-applications-using-zend-framework। एक अतिरिक्त एपीआई बनाना, इस वर्ग –

+0

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

40

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

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

How To Write A Simple PHP/MySQL Web Service for an iOS App

और दूसरा एक यह करने के लिए एक छोटे से मोड़ है। इसने बैकएंड और एएफनेटवर्किंग पर parse.com का इस्तेमाल किया। जो दोनों काफी उत्कृष्ट हैं।

How To Synchronize Core Data with a Web Service – Part 1


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


मैं अपने आईफोन ऐप के साथ बिल्कुल वही काम कर रहा हूं। मैं 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

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

0

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

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

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

6

मैं PHP के साथ RESTful एपीआई बनाने के लिए एक काफी सरल ट्यूटोरियल का पालन किया:

Corey Maynard - Creating a RESTful API with PHP

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

  • एक अमूर्त वर्ग कि यूआरआई की पार्स करने और प्रतिक्रिया लौटाएँ संभालती है, और
  • एक ठोस वर्ग कि सिर्फ एपीआई के लिए अंतिम बिंदु के होते हैं।
+1

यह मेरे लिए बहुत उपयोगी था, धन्यवाद। –

संबंधित मुद्दे