एपीआई

From Vigyanwiki
Revision as of 13:06, 1 January 2023 by alpha>Sadafsiddiqui
नासा द्वारा लिखित वेब एपीआई प्रलेखन का स्क्रीनशॉट।

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

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

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

एपीआई शब्द का प्रयोग प्रायः वेब एपीआई को संदर्भित करने के लिए किया जाता है,[2] जो इंटरनेट से जुड़े कंप्यूटरों के बीच संचार की अनुमति देता है। प्रोग्रामिंग भाषाओं, सॉफ्टवेयर लाइब्रेरी, कंप्यूटर ऑपरेटिंग सिस्टम और कंप्यूटर हार्डवेयर के लिए एपीआई भी हैं। एपीआई की उत्पत्ति 1940 के दशक में हुई थी, हालांकि यह शब्द 1960 और 1970 के दशक तक सामने नहीं आया था। एपीआई में हाल के विकास ने माइक्रोसर्विसेज की लोकप्रियता में वृद्धि की है, जो सार्वजनिक एपीआई के माध्यम से अभिगम की जाने वाली शिथिल युग्मित सेवाएं हैं।[3]

उद्देश्य

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

शब्द का इतिहास

1978 का एक रेखाचित्र, केवल एप्लिकेशन प्रोग्राम से परे, एक सामान्य प्रोग्रामिंग इंटरफ़ेस बनने के लिए एपीआई के विचार के विस्तार का प्रस्ताव करता है।[5]

एपीआई शब्द प्रारम्भ में केवल एंड-यूज़र-फेसिंग प्रोग्राम के लिए एक इंटरफ़ेस का वर्णन करता है, जिसे एप्लिकेशन प्रोग्राम के रूप में जाना जाता है। यह उत्पत्ति अभी भी "एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस" के नाम से परिलक्षित होती है। आज, यह शब्द व्यापक है, जिसमें उपयोगिता (यूटिलिटी) सॉफ्टवेयर और यहां तक कि हार्डवेयर इंटरफेस भी सम्मिलित हैं।[6]

1940 और 1950 के दशक

API का विचार स्वयं शब्द से बहुत पुराना है। ब्रिटिश कंप्यूटर वैज्ञानिक मौरिस विल्क्स और डेविड व्हीलर ने 1940 के दशक में एक प्रारंभिक कंप्यूटर ईडीएसएसी (EDSAC) के लिए एक मॉड्यूलर सॉफ्टवेयर लाइब्रेरी पर काम किया। इस लाइब्रेरी में सबरूटीन्स को फाइलिंग कैबिनेट में व्यवस्थित पंच पेपर टेप पर संग्रहित किया गया था। इस कैबिनेट में यह भी सम्मिलित है कि विल्क्स और व्हीलर ने प्रत्येक सबरूटीन के बारे में नोट्स की एक "लाइब्रेरी कैटलॉग" को क्या कहा और इसे एक प्रोग्राम में कैसे सम्मिलित किया जाए। आज, इस तरह के कैटलॉग को एपीआई (या एपीआई विनिर्देश या एपीआई दस्तावेज) कहा जाएगा क्योंकि यह एक प्रोग्रामर को निर्देश देता है कि प्रोग्रामर को प्रत्येक सबरूटीन का उपयोग (या "कॉल") कैसे करें।[6]

विल्क्स एंड व्हीलर की 1951 की किताब एक इलेक्ट्रॉनिक डिजिटल कंप्यूटर के लिए प्रोग्राम तैयार करने में पहला प्रकाशित एपीआई विनिर्देश सम्मिलित है। जोशुआ बलोच का मानना है कि विल्क्स और व्हीलर ने "अव्यक्त रूप से एपीआई का आविष्कार" किया क्योंकि यह एक ऐसी अवधारणा है जिसे खोजा गया है न कि आविष्कार किया गया है।[6]

Although the people who coined the term API were implementing software on a UNIVAC 1100/2200 श्रृंखला #1108, उनके एपीआई का लक्ष्य हार्डवेयर स्वतंत्र कार्यक्रमों को संभव बनाना था।[7]

1960 और 1970 के दशक

शब्द "एप्लिकेशन प्रोग्राम इंटरफ़ेस" (बिना -आईएनजी प्रत्यय के) पहली बार 1968 में एएफआईपीएस (AFIPS) सम्मेलन में प्रस्तुत रिमोट कंप्यूटर ग्राफिक्स के लिए डेटा संरचना और तकनीक नामक एक पेपर में दर्ज किया गया था।[8][6] इस पेपर के लेखक इस स्थिति में बाकी कंप्यूटर प्रणाली के साथ एक ग्राफिक प्रोग्राम की परस्पर क्रिया का वर्णन करने के लिए इस शब्द का उपयोग करते हैं। एक सुसंगत एप्लिकेशन इंटरफ़ेस (फोरट्रान सबरूटीन कॉल्स से मिलकर) का उद्देश्य प्रोग्रामर को ग्राफिक्स डिस्प्ले डिवाइस विशिष्टताओं से निपटने से मुक्त करना और कंप्यूटर या डिस्प्ले को बदलने पर हार्डवेयर स्वतंत्रता प्रदान करना था।[7]

डेटाबेस के क्षेत्र में इस शब्द का परिचय सी.जे. डेट[9] ने 1974 में द रिलेशनल एंड नेटवर्क एप्रोचेज़: कम्पेरिज़न ऑफ़ द एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस नामक एक पेपर में किया था।[10] एक एपीआई डेटाबेस प्रबंधन प्रणालियों के लिए एएनएसआई/स्पार्क रूपरेखा का हिस्सा बन गया। इस रूपरेखा ने एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस को अन्य इंटरफेस, जैसे कि क्वेरी इंटरफ़ेस से अलग से व्यवहार किया। 1970 के दशक में डाटाबेस पेशेवरों ने देखा कि इन विभिन्न इंटरफेसों को जोड़ा जा सकता है पर्याप्त रूप से समृद्ध एप्लिकेशन इंटरफ़ेस अन्य इंटरफेसों का भी समर्थन कर सकता है।[5]

इस अवलोकन ने एपीआई का नेतृत्व किया जो सभी प्रकार की प्रोग्रामिंग का समर्थन करता था, न कि केवल एप्लिकेशन प्रोग्रामिंग का।

1990 के दशक

1990 तक, प्रौद्योगिकीविद् कार्ल मलामुद द्वारा एपीआई को "कुछ कार्यों को करने के लिए एक प्रोग्रामर के लिए उपलब्ध सेवाओं का एक सेट" के रूप में परिभाषित किया गया था।[11]

दूरस्थ प्रक्रिया कॉल और वेब एपीआई का प्रारम्भ के साथ एपीआई के विचार को फिर से विस्तारित किया गया। चूंकि 1970 और 1980 के दशक में कंप्यूटर नेटवर्क सामान्य हो गए थे, प्रोग्रामर न केवल अपने स्थानीय कंप्यूटरों पर बल्कि अन्यत्र स्थित कंप्यूटरों पर स्थित लाइब्रेरी को कॉल चाहते थे ये दूरस्थ प्रक्रिया कॉल विशेष रूप से जावा भाषा द्वारा अच्छी तरह से समर्थित थे। 1990 के दशक में, इंटरनेट के प्रसार के साथ, कोरबा (CORBA), कॉम (COM), और डीकॉम (DCOM) जैसे मानकों ने एपीआई सेवाओं को प्रकट करने का सबसे सामान्य तरीका बनने के लिए प्रतिस्पर्धा की।[12]

2000 के दशक

2000 में यूसी इरविन में रॉय फील्डिंग के शोध प्रबंध आर्किटेक्चरल स्टाइल्स और नेटवर्क-आधारित सॉफ़्टवेयर आर्किटेक्चर के डिज़ाइन ने प्रतिनिधित्ववादी स्थिति में स्थानांतरण (आरईएसटी) को रेखांकित किया और "नेटवर्क-आधारित एप्लिकेशन प्रोग्रामिंग इंटरफेस" के विचार का वर्णन किया, जो फील्डिंग पारंपरिक "लाइब्रेरी-आधारित" एपीआई के विपरीत है।[13] एक्सएमएल (XML) और जेएसओएन (JSON) वेब एपीआई ने 2000 में व्यापक व्यावसायिक स्वीकृति देखी और 2022 तक जारी रही। वेब एपीआई अब एपीआई शब्द का सबसे सामान्य अर्थ है।[2]

2001 में टिम बर्नर्स-ली द्वारा प्रस्तावित सिमेंटिक वेब में "सिमेंटिक एपीआई" सम्मिलित था जो एपीआई को एक सॉफ्टवेयर व्यवहार इंटरफेस के स्थान पर एक खुले वितरित डेटा इंटरफेस के रूप में पुन: प्रस्तुत करता है।[14] स्वामित्व इंटरफेस और एजेंट खुले इंटरफेस की तुलना में अधिक व्यापक हो गए लेकिन डेटा इंटरफेस के रूप में एपीआई के विचार ने जोर पकड़ लिया। क्योंकि वेब एपीआई का व्यापक रूप से सभी प्रकार के ऑनलाइन डेटा के आदान-प्रदान के लिए उपयोग किया जाता है, एपीआई एक व्यापक शब्द बन गया है जो इंटरनेट पर अधिकांश संचार का वर्णन करता है।[12] जब इस तरह से उपयोग किया जाता है, तो एपीआई शब्द का अर्थ संचार प्रोटोकॉल शब्द के साथ अधिव्याप्त होता है।== उपयोग ==

लाइब्रेरी और रूपरेखा

सॉफ्टवेयर लाइब्रेरी का इंटरफ़ेस एक प्रकार का एपीआई है। एपीआई "अपेक्षित व्यवहार" (एक विनिर्देश) का वर्णन करता और निर्धारित करता है, जबकि लाइब्रेरी नियमों के इस सेट का "वास्तविक कार्यान्वयन" है।

एक ही प्रोग्रामिंग इंटरफेस को साझा करने वाली विभिन्न लाइब्रेरी के रूप में एक एकल एपीआई में कई कार्यान्वयन (या कोई नहीं, निराकार होने) हो सकते हैं।

एपीआई को इसके कार्यान्वयन से अलग करने से एक भाषा में लिखे गए प्रोग्राम को दूसरी भाषा में लिखी गई लाइब्रेरी का उपयोग करने की अनुमति मिल सकती है। उदाहरण के लिए, क्योंकि स्काला और जावा संगत बाइटकोड को संकलित करते हैं, स्काला डेवलपर्स किसी भी जावा एपीआई का लाभ उठा सकते हैं।[15]

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

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

एसडब्ल्यूआईजी (SWIG) और एफ2पीवाई (F2PY) और जैसे फोरट्रान-से-पायथन इंटरफेस जनित्र ऐसे इंटरफेस के निर्माण की सुविधा प्रदान करते हैं।[22]

एक एपीआई एक सॉफ्टवेयर रूपरेखा से भी संबंधित हो सकता है- एक रूपरेखा कई लाइब्रेरी पर आधारित हो सकता है जो कई एपीआई को लागू करता है, लेकिन एक एपीआई के सामान्य उपयोग के विपरीत, रूपरेखा में निर्मित व्यवहार तक पहुंच की मध्यस्थता इसकी सामग्री को रूपरेखा में लगाए गए नए वर्गों के साथ विस्तारित करके की जाती है।

इसके अलावा, नियंत्रण का समग्र प्रोग्राम प्रवाह कॉल करने वाले के नियंत्रण से बाहर और नियंत्रण के व्युत्क्रम या इसी तरह के तंत्र द्वारा रूपरेखा के हाथों में हो सकता है।[23][24]

ऑपरेटिंग सिस्टम

एक एपीआई एप्लिकेशन और ऑपरेटिंग सिस्टम के बीच इंटरफेस को निर्दिष्ट कर सकता है।[25] पीओएसआईएक्स (POSIX), उदाहरण के लिए, सामान्य एपीआई विनिर्देशों का एक सेट प्रदान करता है जिसका उद्देश्य पीओएसआईएक्स (POSIX) अनुरूप ऑपरेटिंग सिस्टम के लिए लिखे गए एप्लिकेशन को अन्य पीओएसआईएक्स (POSIX) अनुरूप ऑपरेटिंग सिस्टम के लिए संकलित करने में सक्षम बनाना है।

लिनक्स और बर्कले सॉफ्टवेयर वितरण ऑपरेटिंग सिस्टम के उदाहरण हैं जो पीओएसआईएक्स (POSIX) एपीआई को लागू करते हैं।[26]

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

एक एपीआई एक एप्लिकेशन बाइनरी इंटरफ़ेस (एबीआई) से अलग है जिसमें एपीआई स्रोत कोड आधारित है जबकि एबीआई बाइनरी आधारित है। उदाहरण के लिए, पीओएसआईएक्स (POSIX) एपीआई प्रदान करता है जबकि लिनक्स मानक आधार एबीआई प्रदान करता है।[28][29]

रिमोट एपीआई

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

प्रॉक्सी ऑब्जेक्ट के एक संशोधन के परिणामस्वरूप रिमोट ऑब्जेक्ट का एक समान संशोधन भी होगा।[32]

वेब एपीआई

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

एक उदाहरण एक शिपिंग कंपनी एपीआई हो सकती है जिसे शिपिंग सेवाओं को ऑर्डर करने की सुविधा के लिए ईकामर्स-केंद्रित वेबसाइट में जोड़ा जा सकता है और साइट डेवलपर को वेब डेटाबेस में शिपर की दर तालिका में प्रवेश किए बिना स्वचालित रूप से वर्तमान शिपिंग दरों को शामिल किया जा सकता है। जबकि वेब एपीआई ऐतिहासिक रूप से वेब सेवा का पर्यायवाची रहा है, हाल की प्रवृत्ति (तथाकथित वेब 2.0) सिंपल ऑब्जेक्ट एक्सेस प्रोटोकॉल (SOAP) आधारित वेब सेवाओं और सेवा-उन्मुख वास्तुकला (SOA) से अधिक प्रत्यक्ष प्रतिनिधित्व वाली स्थिति की ओर बढ़ रही है। स्थानांतरण (REST) ​​शैली वेब संसाधन और संसाधन-उन्मुख आर्किटेक्चर (ROA)।[33] इस प्रवृत्ति का एक हिस्सा सिमेंटिक वेब मूवमेंट टू रिसोर्स डिस्क्रिप्शन फ्रेमवर्क (RDF) से संबंधित है, जो वेब-आधारित ऑन्कोलॉजी इंजीनियरिंग तकनीकों को बढ़ावा देने के लिए एक अवधारणा है। वेब एपीआई मैशअप (वेब ​​एप्लिकेशन हाइब्रिड) के रूप में ज्ञात नए अनुप्रयोगों में कई एपीआई के संयोजन की अनुमति देता है।[34] सोशल मीडिया स्पेस में, वेब एपीआई ने वेब समुदायों को समुदायों और अनुप्रयोगों के बीच सामग्री और डेटा साझा करने की सुविधा प्रदान करने की अनुमति दी है। इस तरह, एक स्थान पर गतिशील रूप से बनाई गई सामग्री को वेब पर कई स्थानों पर पोस्ट और अपडेट किया जा सकता है।[35] उदाहरण के लिए, ट्विटर का रेस्ट एपीआई डेवलपर्स को कोर ट्विटर डेटा तक पहुंचने की अनुमति देता है और सर्च एपीआई डेवलपर्स को ट्विटर सर्च और ट्रेंड डेटा के साथ इंटरैक्ट करने के तरीके प्रदान करता है।[36]

डिजाइन

एपीआई के डिजाइन का इसके उपयोग पर महत्वपूर्ण प्रभाव पड़ता है।[4]सबसे पहले, प्रोग्रामिंग इंटरफेस का डिजाइन सॉफ्टवेयर आर्किटेक्चर के एक महत्वपूर्ण हिस्से का प्रतिनिधित्व करता है, सॉफ्टवेयर के एक जटिल टुकड़े का संगठन।[37] सूचना छिपाने का सिद्धांत मॉड्यूल के कार्यान्वयन विवरण को छिपाकर मॉड्यूलर प्रोग्रामिंग को सक्षम करने के रूप में प्रोग्रामिंग इंटरफेस की भूमिका का वर्णन करता है ताकि मॉड्यूल के उपयोगकर्ताओं को मॉड्यूल के अंदर की जटिलताओं को समझने की आवश्यकता न हो।[38] पिछले अंतर्निहित सिद्धांत के अलावा, एपीआई की उपयोगिता को मापने के लिए अन्य मेट्रिक्स में कार्यात्मक दक्षता, समग्र शुद्धता और नौसिखियों के लिए सीखने की क्षमता जैसे गुण शामिल हो सकते हैं।[39] एपीआई डिजाइन करने का एक सीधा और आमतौर पर अपनाया जाने वाला तरीका है नीलसन के ह्यूरिस्टिक्स|नील्सन के अनुमानी मूल्यांकन दिशानिर्देशों का पालन करना। फ़ैक्टरी विधि पैटर्न भी उनके पुन: प्रयोज्य प्रकृति के कारण एपीआई को डिजाइन करने में विशिष्ट है।[40] इस प्रकार, एपीआई का डिज़ाइन केवल वे उपकरण प्रदान करने का प्रयास करता है जिनकी उपयोगकर्ता अपेक्षा करता है।[4]

तुल्यकालिक बनाम अतुल्यकालिक

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

सुरक्षा

पब्लिक फेसिंग एपीआई विकसित करते समय एपीआई सुरक्षा बहुत महत्वपूर्ण है। सामान्य खतरों में SQL इंजेक्शन, डेनियल-ऑफ़-सर्विस अटैक (DoS), टूटा हुआ प्रमाणीकरण और संवेदनशील डेटा को उजागर करना शामिल है।[42] उचित सुरक्षा प्रथाओं को सुनिश्चित किए बिना खराब अभिनेता उस जानकारी तक पहुंच प्राप्त कर सकते हैं जो उनके पास नहीं होनी चाहिए या आपके सर्वर में परिवर्तन करने के लिए विशेषाधिकार भी प्राप्त कर सकते हैं। कुछ सामान्य सुरक्षा प्रथाओं में HTTPS का उपयोग करके उचित कनेक्शन सुरक्षा, डेटा इंजेक्शन हमलों को कम करने के लिए सामग्री सुरक्षा, और आपकी सेवा का उपयोग करने के लिए API कुंजी की आवश्यकता शामिल है।[43] कई सार्वजनिक एपीआई सेवाओं के लिए आपको एक निर्दिष्ट एपीआई कुंजी का उपयोग करने की आवश्यकता होती है, और आपके अनुरोध के साथ कुंजी भेजे बिना डेटा की सेवा करने से इंकार कर देगी।[44]

रिलीज नीतियां

एपीआई अधिक सामान्य तरीकों में से एक है जिसे प्रौद्योगिकी कंपनियां एकीकृत करती हैं। एपीआई प्रदान करने और उपयोग करने वालों को एक व्यावसायिक पारिस्थितिकी तंत्र के सदस्य के रूप में माना जाता है।[45] एपीआई जारी करने की मुख्य नीतियां हैं:[46]

  • निजी: एपीआई केवल कंपनी के आंतरिक उपयोग के लिए है।
  • भागीदार: केवल विशिष्ट व्यावसायिक भागीदार ही एपीआई का उपयोग कर सकते हैं। उदाहरण के लिए, किराए पर लेने वाली कंपनियां जैसे Uber और Lyft, स्वीकृत तृतीय-पक्ष डेवलपर्स को उनके ऐप के भीतर से सीधे सवारी का आदेश देने की अनुमति देती हैं। यह कंपनियों को गुणवत्ता नियंत्रण का अभ्यास करने की अनुमति देता है कि किन ऐप्स की एपीआई तक पहुंच है और उन्हें एक अतिरिक्त राजस्व स्ट्रीम प्रदान करता है।[47]
  • सार्वजनिक: एपीआई जनता के उपयोग के लिए उपलब्ध है। उदाहरण के लिए, Microsoft Windows API को सार्वजनिक करता है, और Apple Inc. अपना API Cocoa (API) जारी करता है ताकि सॉफ्टवेयर को उनके कंप्यूटिंग प्लेटफॉर्म के लिए लिखा जा सके। सभी सार्वजनिक एपीआई आम तौर पर हर किसी के द्वारा सुलभ नहीं होते हैं। उदाहरण के लिए, क्लाउडफ्लेयर या वोक्सिलिटी जैसे इंटरनेट सेवा प्रदाता, ग्राहकों और पुनर्विक्रेताओं को उनकी बुनियादी सुविधाओं की जानकारी, DDoS आँकड़े, नेटवर्क प्रदर्शन, या डैशबोर्ड नियंत्रणों तक पहुँचने की अनुमति देने के लिए RESTful API का उपयोग करते हैं।[48] ऐसे एपीआई तक पहुंच या तो एपीआई टोकन या ग्राहक स्थिति सत्यापन द्वारा प्रदान की जाती है।[49]

सार्वजनिक एपीआई निहितार्थ

जब एक एपीआई सार्वजनिक हो जाता है तो एक महत्वपूर्ण कारक इसकी इंटरफ़ेस स्थिरता है। एपीआई में परिवर्तन - उदाहरण के लिए फ़ंक्शन कॉल में नए पैरामीटर जोड़ना - उस एपीआई पर निर्भर क्लाइंट के साथ संगतता तोड़ सकता है।[50] जब सार्वजनिक रूप से प्रस्तुत एपीआई के हिस्से परिवर्तन के अधीन होते हैं और इस प्रकार स्थिर नहीं होते हैं, तो किसी विशेष एपीआई के ऐसे हिस्सों को स्पष्ट रूप से अस्थिर के रूप में प्रलेखित किया जाना चाहिए। उदाहरण के लिए, Google Guava लाइब्रेरी में, जो हिस्से अस्थिर माने जाते हैं, और जो जल्द ही बदल सकते हैं, उन्हें जावा एनोटेशन के साथ चिह्नित किया गया है @Beta.[51] एक सार्वजनिक एपीआई कभी-कभी खुद के कुछ हिस्सों को पदावनत या रद्द करने की घोषणा कर सकता है। आमतौर पर इसका मतलब यह है कि एपीआई के हिस्से को हटाए जाने के लिए उम्मीदवार माना जाना चाहिए, या पिछड़े असंगत तरीके से संशोधित किया जाना चाहिए। इसलिए, ये परिवर्तन डेवलपर्स को एपीआई के उन हिस्सों से संक्रमण करने की अनुमति देते हैं जिन्हें हटा दिया जाएगा या भविष्य में समर्थित नहीं किया जाएगा।[52] क्लाइंट कोड में नवीन या अवसरवादी उपयोग हो सकते हैं जो एपीआई डिजाइनरों द्वारा अभिप्रेत नहीं थे। दूसरे शब्दों में, महत्वपूर्ण उपयोगकर्ता आधार वाली लाइब्रेरी के लिए, जब कोई तत्व सार्वजनिक एपीआई का हिस्सा बन जाता है, तो इसका उपयोग विविध तरीकों से किया जा सकता है।[53] 19 फरवरी, 2020 को, अकामाई टेक्नोलॉजीज ने दुनिया भर में वित्तीय सेवाओं पर सार्वजनिक एपीआई प्लेटफार्मों को लक्षित करने वाले साइबर अपराधियों की बढ़ती प्रवृत्ति को प्रदर्शित करते हुए अपनी वार्षिक इंटरनेट रिपोर्ट प्रकाशित की। दिसंबर 2017 से नवंबर 2019 तक, अकामाई ने 85.42 बिलियन क्रेडेंशियल उल्लंघन के हमले देखे। लगभग 20%, या 16.55 बिलियन, एपीआई एंडपॉइंट्स के रूप में परिभाषित होस्टनामों के विरुद्ध थे। इनमें से 473.5 मिलियन ने वित्तीय सेवा क्षेत्र के संगठनों को लक्षित किया है।[54]

दस्तावेज़ीकरण

एपीआई प्रलेखन उन सेवाओं का वर्णन करता है जो एक एपीआई प्रदान करता है और उन सेवाओं का उपयोग कैसे करें, जिसका लक्ष्य व्यावहारिक उद्देश्यों के लिए एक ग्राहक को जानने की आवश्यकता होगी।

एपीआई का उपयोग कर अनुप्रयोगों के विकास और रखरखाव के लिए दस्तावेज़ीकरण महत्वपूर्ण है।[55] एपीआई प्रलेखन पारंपरिक रूप से दस्तावेज़ीकरण फ़ाइलों में पाया जाता है, लेकिन सोशल मीडिया जैसे ब्लॉग, फ़ोरम और क्यू एंड ए वेबसाइटों में भी पाया जा सकता है।[56] पारंपरिक दस्तावेज़ीकरण फ़ाइलें अक्सर एक प्रलेखन प्रणाली के माध्यम से प्रस्तुत की जाती हैं, जैसे कि Javadoc या Pydoc, जिसमें एक सुसंगत रूप और संरचना होती है। हालाँकि, प्रलेखन में शामिल सामग्री के प्रकार एपीआई से एपीआई में भिन्न होते हैं।[57] स्पष्टता के हित में, एपीआई प्रलेखन में एपीआई में वर्गों और विधियों के विवरण के साथ-साथ विशिष्ट उपयोग परिदृश्य, कोड स्निपेट, डिज़ाइन तर्क, प्रदर्शन चर्चा और अनुबंध शामिल हो सकते हैं, लेकिन स्वयं एपीआई सेवाओं के कार्यान्वयन विवरण को आमतौर पर छोड़ दिया जाता है।

एपीआई का उपयोग कैसे किया जा सकता है, इस पर प्रतिबंध और सीमाएं भी प्रलेखन द्वारा कवर की गई हैं। उदाहरण के लिए, एक एपीआई फ़ंक्शन के लिए प्रलेखन नोट कर सकता है कि इसके पैरामीटर शून्य नहीं हो सकते हैं, या फ़ंक्शन स्वयं थ्रेड सुरक्षा नहीं है।[58] क्योंकि एपीआई प्रलेखन व्यापक होता है, लेखकों के लिए दस्तावेज़ीकरण को अद्यतन रखना और उपयोगकर्ताओं के लिए इसे ध्यान से पढ़ना एक चुनौती है, संभावित रूप से बग पैदा करना।[50]REST API के लिए संदर्भ दस्तावेज़ OpenAPI दस्तावेज़ से स्वचालित रूप से उत्पन्न हो सकते हैं, जो एक मशीन-पठनीय पाठ फ़ाइल है जो OpenAPI विशिष्टता में परिभाषित एक निर्धारित प्रारूप और सिंटैक्स का उपयोग करती है। ओपनएपीआई दस्तावेज़ एपीआई के नाम और विवरण जैसी बुनियादी जानकारी को परिभाषित करता है, साथ ही उन कार्यों का वर्णन करता है जिन तक एपीआई पहुंच प्रदान करता है।[59] एपीआई प्रलेखन को जावा एनोटेशन जैसी मेटाडेटा जानकारी से समृद्ध किया जा सकता है। कस्टम व्यवहार या कस्टम हैंडलिंग को लागू करने के लिए इस मेटाडेटा का उपयोग कंपाइलर, टूल्स और रन-टाइम वातावरण द्वारा किया जा सकता है।[60] डेटा-संचालित तरीके से एपीआई दस्तावेज़ तैयार करना संभव है। किसी दिए गए एपीआई का उपयोग करने वाले कई कार्यक्रमों को देखकर, सामान्य उपयोगों के साथ-साथ आवश्यक अनुबंधों और निर्देशों का अनुमान लगाना संभव है।[61] फिर, खनन किए गए डेटा से प्राकृतिक भाषा उत्पन्न करने के लिए टेम्प्लेट का उपयोग किया जा सकता है।

एपीआई के लिए कॉपीराइट सुरक्षा पर विवाद

2010 में, Oracle Corporation ने Android ऑपरेटिंग सिस्टम में एम्बेडेड जावा के एक नए कार्यान्वयन को वितरित करने के लिए Google पर मुकदमा दायर किया।[62] Google ने Java API को पुन: उत्पन्न करने के लिए कोई अनुमति प्राप्त नहीं की थी, हालाँकि समान OpenJDK प्रोजेक्ट को अनुमति दी गई थी। Google ने अपने API के लिए एक लाइसेंस के लिए बातचीत करने के लिए Oracle से संपर्क किया था, लेकिन भरोसे के मुद्दों के कारण इसे ठुकरा दिया गया था। असहमति के बावजूद, Google ने वैसे भी Oracle के कोड का उपयोग करना चुना। न्यायाधीश विलियम अलसुप ने ओरेकल बनाम गूगल मामले में फैसला सुनाया कि यू.एस. में एपीआई को कॉपीराइट नहीं किया जा सकता है और ओरेकल की जीत से प्रतीकों के एक कार्यात्मक सेट के लिए व्यापक रूप से कॉपीराइट सुरक्षा का विस्तार होगा और सरल सॉफ्टवेयर कमांड के कॉपीराइटिंग की अनुमति होगी:

To accept Oracle's claim would be to allow anyone to copyright one version of code to carry out a system of commands and thereby bar all others from writing its different versions to carry out all or part of the same commands.[63][64]

अलसुप के फैसले को 2014 में यूनाइटेड स्टेट्स कोर्ट ऑफ अपील्स फॉर द फेडरल सर्किट में अपील पर पलट दिया गया था, हालांकि एपीआई के इस तरह के उपयोग से उचित उपयोग का सवाल अनसुलझा रह गया था।[65][66] 2016 में, दो सप्ताह के परीक्षण के बाद, एक जूरी ने निर्धारित किया कि जावा एपीआई के Google के पुन: कार्यान्वयन ने उचित उपयोग का गठन किया, लेकिन ओरेकल ने निर्णय की अपील करने की कसम खाई।[67] ओरेकल ने अपनी अपील पर जीत हासिल की, कोर्ट ऑफ अपील्स फॉर द फेडरल सर्किट के फैसले के साथ कि Google द्वारा एपीआई का उपयोग उचित उपयोग के लिए योग्य नहीं था।[68] 2019 में, Google ने संयुक्त राज्य के सर्वोच्च न्यायालय में कॉपीराइट योग्यता और उचित उपयोग दोनों के निर्णयों पर अपील की, और सर्वोच्च न्यायालय ने समीक्षा की अनुमति दी।[69] COVID-19 महामारी के कारण, मामले की मौखिक सुनवाई अक्टूबर 2020 तक विलंबित हो गई।[70] इस मामले का फैसला सुप्रीम कोर्ट ने 6-2 के फैसले के साथ Google के पक्ष में दिया था। न्यायमूर्ति स्टीफन ब्रेयर ने अदालत की राय दी और एक बिंदु पर उल्लेख किया कि घोषित कोड कॉपीराइट के मूल से अधिकांश कंप्यूटर प्रोग्रामों की तुलना में कॉपीराइट योग्य है। इसका अर्थ है कि कॉपीराइट सुरक्षा के मामले में एपीआई में उपयोग किए गए कोड उपन्यासों की तुलना में शब्दकोशों के समान हैं।[71]

उदाहरण

  • SCSI डिवाइस इंटरफेसिंग के लिए उन्नत SCSI प्रोग्रामिंग इंटरफ़ेस
  • मैकिंटोश के लिए कोको (एपीआई) और कार्बन (एपीआई)।
  • माइक्रोसॉफ्ट विंडोज के लिए डायरेक्टएक्स
  • एहल्लापि
  • जावा एपीआई की सूची
  • माइक्रोसॉफ्ट विंडोज के लिए ओपन डाटाबेस कनेक्टिविटी
  • ओपनएएल क्रॉस-प्लेटफॉर्म साउंड एपीआई
  • सीपीयू और जीपीयू के लिए सामान्य प्रयोजन कंप्यूटिंग के लिए ओपनसीएल क्रॉस-प्लेटफॉर्म एपीआई
  • ओपनजीएल क्रॉस-प्लेटफॉर्म ग्राफिक्स एपीआई
  • ओपनएमपी एपीआई जो यूनिक्स और माइक्रोसॉफ्ट विंडोज प्लेटफॉर्म सहित कई आर्किटेक्चर पर सी, सी ++ और फोरट्रान में मल्टी-प्लेटफॉर्म शेयर्ड मेमोरी मल्टीप्रोसेसिंग प्रोग्रामिंग का समर्थन करता है।
  • सर्वर अनुप्रयोग प्रोग्रामिंग इंटरफ़ेस (SAPI)
  • सिंपल डायरेक्टमीडिया लेयर (SDL)

यह भी देखें

  • एपीआई परीक्षण
  • एपीआई लेखक
  • संवर्धित वेब
  • कॉलिंग कन्वेंशन
  • कॉमन ऑब्जेक्ट रिक्वेस्ट ब्रोकर आर्किटेक्चर (कॉरबा)
  • आवेदन आभासी मशीनों की तुलना
  • डॉक्यूमेंट ऑब्जेक्ट मॉडल (DOM)
  • डबल-चांस फंक्शन
  • विदेशी फ़ंक्शन इंटरफ़ेस
  • आगे और पीछे के सिरे
  • इंटरफ़ेस (कंप्यूटिंग)
  • इंटरफ़ेस नियंत्रण दस्तावेज़
  • 3डी ग्राफिक्स एपीआई की सूची
  • माइक्रोसर्विसेज
  • नाम मैंगलिंग
  • ओपन एपीआई
  • ओपन सर्विस इंटरफेस डेफिनिशन
  • पार्सिंग
  • प्लग-इन (कंप्यूटिंग)
  • आरएएमएल (सॉफ्टवेयर)
  • सॉफ्टवेयर डेवलपमेंट किट (एसडीके)
  • वेब एपीआई
  • वेब सामग्री विक्रेता
  • एक्सपीकॉम

संदर्भ

  1. Reddy, Marathi (2011). सी ++ के लिए एपीआई डिजाइन. Elsevier Science. p. 1. ISBN 9780123850041.
  2. 2.0 2.1 Lane, Kin (October 10, 2019). "एपीआई का परिचय: एपीआई का इतिहास". Postman. Retrieved September 18, 2020. जब आप "एपीआई" या इसके विस्तारित संस्करण "एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस" सुनते हैं, तो यह लगभग हमेशा हमारे आधुनिक दृष्टिकोण के संदर्भ में होता है, जिसमें हम JSON या XML प्रारूप में मशीन पठनीय डेटा तक पहुंच प्रदान करने के लिए HTTP का उपयोग करते हैं, अक्सर बस "वेब एपीआई" के रूप में जाना जाता है। API लगभग कंप्यूटिंग जितनी लंबी रही हैं, लेकिन आधुनिक वेब API ने 2000 के दशक की शुरुआत में आकार लेना शुरू किया था।
  3. Wood, Laura (2021-08-25). "ग्लोबल क्लाउड माइक्रोसर्विसेज मार्केट (2021 से 2026)". Retrieved 2022-03-29.
  4. 4.0 4.1 4.2 Clarke, Steven (2004). "मापने एपीआई उपयोगिता". Dr. Dobb's. Retrieved 29 July 2016.
  5. 5.0 5.1 डाटाबेस आर्किटेक्चर - एक व्यवहार्यता कार्यशाला (Report). Washington, DC: U.S. Department of Commerce, National Bureau of Standards. April 1981. pp. 45–47.