एपीआई बनाम वेबसेवा [बंद]


204

एक webservice और एक एपीआई के बीच अंतर क्या है? क्या अंतर डेटा को स्थानांतरित करने के लिए उपयोग किए जाने वाले प्रोटोकॉल से अधिक है? धन्यवाद।


3
एपीआई द्वारा, आप HTTP द्वारा पहुँचा एक एपीआई मतलब है? या सिर्फ एक नियमित सादा एपीआई?
पाब्लो सांताक्रूज़



आप मेरे साथ मज़ाक कर रहे होंगे। मिश्रण स्तर के कारण 122 अपवाह और प्रश्न टूट गया है।
जोशुआ

तुम मुझे मिल गए, मुझे यकीन नहीं है कि यह सवाल बंद क्यों किया गया था
चिप्स

जवाबों:


172

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

विशेष रूप से वेब सेवाओं के उदाहरणों के लिए, SOAP , REST और XML-RPC देखें । एक अन्य प्रकार के एपीआई के उदाहरण के लिए, एक स्थानीय मशीन पर उपयोग के लिए सी में लिखा गया है, लिनक्स कर्नेल एपीआई देखें

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


8
क्या आप हर वेब सेवा को एपीआई मानते हैं? पूरे पृष्ठ को पुनः लोड करने के विपरीत वेब पेज के एक क्षेत्र को पुनः लोड करने के लिए AJAX का उपयोग करते समय कैसे करें? यह जरूरी नहीं है कि मैं इसे एक वेब सेवा में शामिल होते हुए भी एपीआई के रूप में देखूं। अन्यथा, हम एक ऐसा मामला बना सकते हैं जो कभी भी बनाए गए प्रत्येक बिट फ़ंक्शन के लिए हो, चाहे वह DLL में हो, या JAR, वेब सेवा या सभी API के लिए सादा कोड हो। एपीआई होने के लिए एपीआई के लिए तीसरे पक्ष के डेवलपर्स को ध्यान में रखना होगा और एपीआई के पास अंतिम उत्पाद (एपीआई का उपयोग करने वाला ऐप) के साथ कोई निर्भरता नहीं होनी चाहिए।
रोनाल्ड

18
हां, हर वेब सेवा एक एपीआई है। हाँ, एक AJAX वेब सेवा एक एपीआई है, यह सिर्फ अनैच्छिक है और इसलिए वास्तव में सार्वजनिक उपभोग के लिए नहीं है। हर एपीआई 3 पार्टी की खपत के लिए डिज़ाइन किया गया एक एपीआई नहीं है। आपके पास आंतरिक API भी हो सकते हैं।
रयान शिलिंगटन

54

असल में, एक webservice दो मशीनों के बीच संचार का एक तरीका है जबकि एक एपीआई एक उजागर परत है जो आपको किसी चीज़ के खिलाफ प्रोग्राम करने की अनुमति देता है।

आपके पास बहुत अच्छी तरह से एक एपीआई हो सकता है और उस एपीआई के साथ बातचीत करने का मुख्य तरीका एक webservice के माध्यम से है।

तकनीकी परिभाषाएँ (विकिपीडिया के सौजन्य) हैं:

एपीआई

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

वेब सेवा

एक वेब सेवा (वेब ​​सेवा भी) W3C द्वारा परिभाषित की गई है "एक नेटवर्क पर इंटरऑपरेबल मशीन-टू-मशीन इंटरैक्शन का समर्थन करने के लिए डिज़ाइन किया गया एक सॉफ्टवेयर सिस्टम"


4
मैं किसी के साथ मेरे जवाब पर आपत्ति कर रहा हूं, लेकिन मैं यह जानने के लिए उत्सुक हूं।
मार्क बीइक

41
आपकी प्रतिक्रिया का अर्थ है कि एपीआई और वेबसर्विसेस अलग-अलग हैं, जब वास्तव में एक वेब सेवा एपीआई का एक प्रकार है। चूँकि इस प्रश्न का क्रूस दोनों में क्या अंतर है, यह स्पष्ट करने के लिए प्रतिक्रिया के लिए महत्वपूर्ण है कि webservices एक प्रकार का एपीआई है।
एंड्रयू चोलकियन

3
दिलचस्प। मैं करने जा रहा हूँ (सम्मानजनक :)) असहमत। लेकिन मैं प्रतिक्रिया की सराहना करता हूं।
मार्क बीस्कॉच

43

एक सामान्य अर्थ में एक वेब सेवा है HTTP पर एक एपीआई। वे अक्सर JSON या XML का उपयोग करते हैं, लेकिन कुछ अन्य दृष्टिकोण भी हैं।


20
तो सभी webservices API हैं लेकिन सभी API एक webservice नहीं हैं?
चिप्स

13
राइट, एपीआई पुस्तकालय जैसे DLLs, JARs या OCX आदि हो सकते हैं। वे स्रोत कोड वितरण भी हो सकते हैं जैसे कि फेसबुक 'PHP एपीआई ...
cgp

10

एपीआई एक प्रकाशित इंटरफेस है जो परिभाषित करता है कि घटक ए घटक बी के साथ कैसे संचार करता है।

उदाहरण के लिए, डबलक्लिक में एक प्रकाशित जावा एपीआई है जो उपयोगकर्ताओं को अपने ऑनलाइन विज्ञापन अभियान के बारे में जानकारी प्राप्त करने के लिए डेटाबेस तालिकाओं से पूछताछ करने की अनुमति देता है।

उदाहरण के लिए कॉल GetNumberClicks (उपयोगकर्ता नाम)

एपीआई को लागू करने के लिए, आपको अपने वर्ग पथ में Doubleclick .jar फ़ाइल को जोड़ना होगा। कॉल स्थानीय है।

एक वेब सेवा एपीआई का एक रूप है जहां इंटरफ़ेस को डब्लूएसडीएल के माध्यम से परिभाषित किया गया है। यह HTTP पर एक इंटरफ़ेस की रिमोट कॉलिंग की अनुमति देता है।

अगर Doubleclick ने अपने इंटरफ़ेस को वेब सेवा के रूप में लागू किया, तो वे Tomcat के अंदर चल रहे Axis2 जैसी किसी चीज़ का उपयोग करेंगे।

दूरस्थ उपयोगकर्ता वेब सेवा को कॉल करेगा

उदाहरण के लिए GetNumberClicksWebService को कॉल करें (उपयोगकर्ता नाम)

और GetNumberClicksWebService सेवा GetNumberClicks को स्थानीय रूप से कॉल करेगी।


यह प्रश्न वास्तव में पुराना है, लेकिन मैं ध्यान दूंगा कि यह उत्तर एपीआई और इंटरफेस को भ्रमित करता है। एक एपीआई एक प्रकाशित इंटरफ़ेस से अधिक है (जिसमें SOAP जैसी चीजें शामिल होंगी), यह एक विशेष एप्लिकेशन या सेवा के लिए सार्वजनिक इंटरफ़ेस है। यह कहना अधिक सटीक होगा कि "एपीआई के घटक हैं जिनके पास एक प्रकाशित इंटरफ़ेस है जिसके द्वारा तीसरे पक्ष के घटक उनके साथ बातचीत कर सकते हैं।"
JDB को अभी भी मोनिका

7

एपीआई (एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस), पूर्ण रूप से ही पता चलता है कि इसका एक इंटरफ़ेस जो आपको कुछ अन्य एप्लिकेशन के इंटरफ़ेस की सहायता या सहायता से आपके एप्लिकेशन के लिए प्रोग्राम करने की अनुमति देता है जो कुछ प्रकार की कार्यक्षमता को उजागर करता है जो आपके एप्लिकेशन के लिए उपयोगी है।

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


4

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


मुझे यकीन नहीं है कि आपका उत्तर मौजूदा उत्तरों में कुछ भी जोड़ता है।
andrewsi

3

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


1

इस http://en.wikipedia.org/wiki/Web_service को देखें

जैसा कि उल्लेख किया गया है तब वेब एपीआई वेब सेवाओं में एक विकास है जो सबसे अधिक संभावना वेब 2.0 से संबंधित है, जबकि SOAP आधारित सेवाएं REST आधारित संचार द्वारा प्रतिस्थापित की जाती हैं। ध्यान दें कि REST सेवाओं के लिए XML, SOAP या WSDL सेवा-API परिभाषाओं की आवश्यकता नहीं होती है, इसलिए यह पारंपरिक वेब सेवा के लिए अलग है।


0

एक अन्य उदाहरण: google map api बनाम google दिशा api वेब सेवा, जबकि पूर्व (साइट पर डिलीवर) जावास्क्रिप्ट फ़ाइल साइट पर (जो तब नए कार्य करने के लिए एक एपीआई के रूप में इस्तेमाल की जा सकती है), बाद में एक रेस्ट वेब सेवा प्रदान करने वाली डेटा है ( json या xml प्रारूप में), जिसे संसाधित किया जा सकता है (लेकिन एपीआई अर्थ में उपयोग नहीं किया जाता है)।


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