वेब एपीआई कैसे काम करते हैं? [बन्द है]


17

मैंने फेसबुक, ट्विटर आदि जैसे कई वेब एपीआई के बारे में सुना है, जो तीसरे पक्ष के डेटा तक पहुंचने और इसे हेरफेर करने में मदद करता है। मैं जानना चाहूंगा कि एक वेब एपीआई कैसे काम करता है। एक वेब एपीआई की मूल बातें क्या हैं?

अगर मैं अपनी साइट के लिए एक एपीआई बनाना चाहता हूं, ताकि लोग इसे एक्सेस कर सकें या अपडेट कर सकें, तो मुझे इसके साथ क्या करना होगा?


1
ऐसा नहीं है कि यह महत्वपूर्ण रूप से महत्वपूर्ण है, लेकिन आपकी साइट किस भाषा के साथ बनाई गई है?
ओसोडो

क्या आपने अभी तक फेसबुक वेब एपीआई के लिए प्रलेखन पढ़ा है? Developers.facebook.com/docs यदि आपने इसे नहीं पढ़ा है, तो क्यों नहीं? यदि आपने इसे पढ़ा है, तो आपके पास क्या विशिष्ट प्रश्न हैं?
S.Lott

ठीक है, मैं @ S.Lott करूँगा!
हरीश कुरुप

जवाबों:


23

इसके सरलतम पर, आप GET / POST अनुरोधों का एक सेट बनाते हैं जिसे कोई भी व्यक्ति URL, पैरामीटर और प्रभावों पर कॉल और प्रकाशित कर सकता है। सर्वर पर डेटा को बदलने वाली किसी भी चीज़ के लिए केवल-पढ़ने के कार्यों और POST अनुरोधों के लिए अनुरोध प्राप्त करें।

यदि आवश्यक हो तो एक प्रमाणीकरण प्रणाली में जोड़ें और आपके पास स्वयं एक साधारण वेब एपीआई है।

एक वेब एपीआई मानक HTTP अनुरोध विधियों के माध्यम से आपके सिस्टम (जैसे साइट) तक पहुंच की अनुमति देने के लिए एक इंटरफ़ेस है । डेटा को आमतौर पर कुछ मानक प्रारूप (जैसे कि JSON या XML ) में लपेटा जाता है ताकि इसे संभालना आसान हो सके।


यहाँ एक उदाहरण 'एपीआई' के लिए वेब एपीआई है


ठीक। JSON या XML का उपयोग करने के लिए किस प्रारूप का सर्वश्रेष्ठ होगा ??
हरीश कुरुप

1
JSON - XML ​​में हेरफेर करना बहुत कठिन है और JSON पर कोई लाभ प्रदान नहीं करता है। और XML में आपके पास बड़े ओवरहेड हैं क्योंकि आपके पास समापन टैग होना चाहिए।
स्लावेक

1
@Harish। एक बार फिर, यह उन लोगों में से एक है जो 'आपके उद्देश्य / स्थिति पर पूरी तरह से निर्भर हैं'। जबकि मैं JSON प्रारूप को पसंद कर सकता हूं, अगर मैंने इसे हमारे किसी सिस्टम पर काम के लिए किया है, तो मैं XML का उपयोग करूंगा क्योंकि इसमें XML पार्सिंग क्षमताएं इनबिल्ट हैं, लेकिन JSON नहीं। इसका मतलब है कि कोड रखरखाव आसान है और अन्य डेवलपर्स कमांड से परिचित होंगे।
डैन मैकग्राथ

1
@ हरीश, किसी एक का पक्ष लेना और उसे पहले रिलीज़ करना एक अच्छा विचार है, लेकिन XML और JSON दोनों प्रदान करना आपके उपयोगकर्ताओं की मदद करेगा।
ओसोडो

एक्सएमएल और जेएसएन गज़िप में समान फ़ाइल आकारों के लिए। मैं JSON (JSON XML की तुलना में नया है) की ओर स्थानांतरित करने के लिए एक क्रमिक प्रवृत्ति देख रहा हूं, हालांकि वर्तमान में दोनों की पेशकश करना बहुत आम है। JSON डेटा के आदान-प्रदान के लिए आदर्श है जबकि XML दस्तावेजों के आदान-प्रदान के लिए आदर्श है।
ब्रायन

5

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

मेरा URL कुछ इस प्रकार है:

domain.com/method/call/subcall?key=key&data=something

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

आमतौर पर, मैं दो JSON एन्कोडेड सरणियों को वापस करता हूं, एक जा रहा है result, जो मूल रूप से सिर्फ यह कहता है कि यदि कॉल सफल रहा और त्रुटि कोड / त्रुटि स्ट्रिंग देता है यदि नहीं। दूसरे को आमतौर पर कहा जाता है data, और उस सामग्री को उस विशेष कॉल के प्रलेखन में वर्णित किया जाता है। इसके अतिरिक्त, GET आधारित एपीआई परीक्षण और डिबग के लिए बहुत आसान है।

अन्य स्वरूपों के बहुत सारे मौजूद हैं, जैसे SOAP / XMLRPC, मुझे बस इतना पता है कि JSON को चुनने से मुझे अविश्वसनीय सादगी और पसंद की स्वतंत्रता मिलती है।

उदाहरण के लिए, यदि मुझे बहुत सारे फ़ील्ड भेजने की आवश्यकता है और GET चर के एक टन के साथ सौदा नहीं करना चाहते हैं, तो मैं बस यह कर सकता हूं (उदाहरण PHP में)

$to_send = base64_encode(json_encode($some_array));

यह आसानी से दूसरी तरफ डिकोड किया जाता है, जिससे मुझे काम करने के लिए दर्जनों चर दिए जा रहे हैं, जबकि अभी भी केवल एपीआई के माध्यम से 2 - 3 GET चर स्वीकार कर रहे हैं।

मैं बस अपने तरीके और कॉल को संक्षिप्त और संक्षिप्त रखने की कोशिश करता हूं, और इसे इस तरह से डिजाइन करता हूं, जहां प्रत्येक कॉल एक समान 'काम या विफल' प्रतिक्रिया देता है, इसके बाद अनुरोध किए गए डेटा।


2

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

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

दूरस्थ प्रक्रिया कॉल (RPC)

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

एपीआई की इस शैली के कुछ मानकों में XML-RPC और SOAP शामिल हैं। ये मानक एक प्रारूप बनाने का प्रयास करते हैं जिसका उपयोग आपके द्वारा किए जा रहे फ़ंक्शन कॉल का वर्णन करने के लिए किया जा सकता है, या यहां तक ​​कि पूरे एपीआई का वर्णन करने के लिए भी किया जा सकता है।

स्टेटिकेशनल ट्रांसफर (REST)

REST शैली API में, आपके पास API के लिए नाम स्थान के रूप में एक URL इतना नहीं होता है : एक सर्वर, या सर्वर के अंदर एक फ़ोल्डर, जहाँ बहुत सारी वस्तुएँ रहती हैं, और इस नामस्थान के भीतर प्रत्येक URL हिस्सा बन जाता है। एपीआई के। सर्वर है कि आप एपीआई का उपयोग करना चाहते कह के बजाय, यूआरएल सर्वर क्या आप एपीआई का उपयोग करना चाहते बताता है पर । इसके बाद आप HTTP विधि, और संभवतः अनुरोध शरीर का उपयोग करें, आप क्या करना चाहते हैं की व्याख्या करने के लिए है कि वस्तु: मिलता है, पोस्ट (कुछ नया बनाने), PUT (कुछ पहले से ही वहाँ है कि की जगह), (कुछ पहले से ही वहाँ है कि पुनः प्राप्त) या DELETE (उस चीज़ से छुटकारा पाएं जो पहले से है)। कुछ अन्य क्रियाएं हैं जिनका आप उपयोग कर सकते हैं, लेकिन वे अब तक सबसे आम हैं।

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

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