2011-05-14 35 views
5

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

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

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

तो एपीआई कुंजी को संभालने के लिए मुझे सबसे अच्छा तरीका क्या लगता है? या मैं उन्हें बिल्कुल इस्तेमाल करना चाहिए? कुंजी को वितरित (बनाने, निकालने) के लिए एक और चालाक तरीका है?

अग्रिम में :)

उत्तर

4

अच्छी तरह से धन्यवाद आप जानते हैं mashery http://www.mashery.com/ और programmableweb करते हैं?

शायद वहाँ कुछ उपयोगी ressources हैं http://www.mashery.com/solution/collegeboard

और http://www.3scale.net/

मैं सांख्यिकी और सीमा के लिए एपीआई कुंजी का प्रयोग करेंगे, लेकिन यह भी गूगल जैसी API कुंजी के बिना कुछ सेवाओं की सेवा करता है

आप कर सकते हैं
रेस्टलर http://luracast.com/products/restler/ जैसे समाधानों के साथ आसानी से एपीआई बनाएं 210 Frapi http://getfrapi.com/
Datatank http://thedatatank.com/
सेवा (बस Drupal के लिए) http://drupal.org/project/services

कुछ और देखते हैं: http://blog.programmableweb.com/2011/09/23/short-list-of-restful-api-frameworks-for-php/

+0

मैंने आपके द्वारा यहां दिए गए लिंक की जांच की है। मैं बाहरी सेवाओं का उपयोग नहीं करना चाहता (भले ही वे स्वतंत्र हैं)। और कुछ सेवाओं के लिए एपीआई कुंजी का उपयोग करने और दूसरों के लिए इसका उपयोग नहीं करने के बारे में, क्या यह एपीआई कुंजी के उद्देश्य को हराने में नहीं है? – stormbreaker

+0

अच्छी तरह से Google इसे कई सालों से और कई अन्य लोगों के लिए भी पसंद करता है, ठीक है, अगर आप अपने स्वयं के लिखने के लिए भी हैं (यदि वेब स्रोत फोर्ज आदि के आसपास पहले से मौजूद नहीं है) एपीआई प्रबंधन सॉफ्टवेयर। एपीआई कुंजी के साथ सबकुछ सीमित करना (यह नहीं पता कि आपका होस्टर कौन है) बहुत बेहतर है, इसलिए आप पूरी तरह से उपयोग को नियंत्रित कर सकते हैं ताकि आपके सॉफ़्टवेयर के दुरुपयोग का जोखिम बहुत कम हो और सुरक्षा अधिक हो। या हर कोई इसे एपीआई कुंजी के बिना उपयोग कर सकता है और जो चाहें वह कर सकता है (और अंततः प्रति घंटे अधिक अनुरोधों के साथ अपना सर्वर नीचे ला सकता है)। मुझे लगता है कि सुरक्षा अधिक महत्वपूर्ण है। –

+0

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

2

मैं भी ऊपर पोस्ट में उत्तर - लेकिन स्थान से बाहर भाग गया। एक अस्वीकरण के रूप में मैं 3 स्केल (http://www.3scale.net) के लिए काम करता हूं ताकि आप उस पर आधारित मेरी प्रतिक्रिया को पार्स करना चाहें :)।

आपके प्रश्न का उत्तर वास्तव में इस बात पर निर्भर करता है कि आपके एपीआई किस स्रोत को उजागर करता है और आप ट्रैक/सीमा को लक्षित करने का लक्ष्य रखते हैं। ऐसा लगता है कि अधिकांश फ़ंक्शन किसी प्रकार के उपयोगकर्ता खाते से बंधे होते हैं, लेकिन इसे तृतीय पक्षों द्वारा कार्यान्वित किया जा सकता है।

इस मामले में सबसे उपयोगी पैटर्न संभवतः प्रत्येक एप्लिकेशन के लिए पहचानकर्ता (सार्वजनिक या गुप्त) होना चाहिए जो एपीआई + उपयोगकर्ता प्रमाण-पत्र भी कहता है। एप्लिकेशन पहचानकर्ता एक एपीआईके या यहां तक ​​कि सिर्फ एक नाम हो सकता है (उदा। "ट्वीट ट्वीट")। यदि आप बहुत से तृतीय पक्ष अनुप्रयोगों के साथ समाप्त होते हैं तो संभवतः इन पहचानकर्ताओं को ट्रैक करने के लिए उपयोगी होता है (जो उन्हें जारी करने का न्यूनतम तरीका है) और जानें कि प्रत्येक ऐप को किसने बनाया है + उन्हें बंद करने की क्षमता है (अगर केवल बंद करना है उन लोगों के नीचे जो आपके उपयोगकर्ता-आधार का दुरुपयोग करते हैं)। आप एपीआई पर प्रत्येक उपयोगकर्ता और एप उत्पन्न कर सकते हैं यातायात की मात्रा को सीमित करना भी चाहते हैं, इसलिए यह पहचानकर्ता होने के लिए फिर से उपयोगी है।

इसके अलावा, यदि आपके प्रमाणीकरण करने वाले उपयोगकर्ता, लेकिन तृतीय पक्षों को आपके उपयोगकर्ताओं द्वारा उपयोग किए जाने वाले ऐप्स लिखने की अनुमति देते हैं, तो निश्चित रूप से oAuth (http://www.oauth.net) पर विचार करें ताकि आपके उपयोगकर्ता पासवर्ड कैप्चर करने वाले नकली कोड/साइट से बचें।

आप उपर्युक्त उल्लेख करते हैं कि आप बाहरी सेवाओं पर उत्सुक नहीं हैं - कोई समस्या नहीं, वास्तव में आपके सिस्टेन के लिए सभी एपीआई ऑथ स्थानीय रूप से करने के लिए 3 स्केल काम करता है (उदाहरण के लिए कोड प्लगइन्स में से एक के साथ: https://support.3scale.net/libraries या वार्निश जैसे प्रॉक्सी में: https://github.com/3scale/libvmod-3scale/) और फिर क्लाउड में ट्रैकिंग करता है। जाहिर है, यह सभी उपयोग मामलों में फिट नहीं है, लेकिन आपको बॉक्स के बाहर उपयोगी टूल का एक गुच्छा दे सकता है।

+0

धन्यवाद :)! मैं 3 स्केल पर विचार करूंगा जब मुझे ऐसा कुछ करने की ज़रूरत है क्योंकि जिस परियोजना के बारे में मैं पूछ रहा था वह पहले ही हो चुका है। – stormbreaker

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