एपीआई: Difference between revisions
No edit summary |
No edit summary |
||
| (6 intermediate revisions by 5 users not shown) | |||
| Line 1: | Line 1: | ||
{{short description|Software interface between computers and/or programs}} | {{short description|Software interface between computers and/or programs}} | ||
{{other uses}} | {{other uses}} | ||
{{redirect|Api.php| | {{redirect|Api.php|विकिपीडिया एपीआई|विशेष: एपीआई हेल्प|selfref=ट्रू}} | ||
[[File:Screenshot of NASA API documentation.png|thumb|नासा द्वारा लिखित वेब एपीआई प्रलेखन का स्क्रीनशॉट।]] | [[File:Screenshot of NASA API documentation.png|thumb|नासा द्वारा लिखित वेब एपीआई प्रलेखन का स्क्रीनशॉट।]]'''एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस''' (एपीआई) दो या दो से अधिक कंप्यूटर प्रोग्रामों के लिए एक दूसरे के साथ संवाद करने का एक तरीका है। यह एक प्रकार का सॉफ़्टवेयर इंटरफ़ेस है, जो सॉफ़्टवेयर के अन्य भागों को सेवा प्रदान करता है।<ref>{{cite book |last=Reddy |first=Marathi |author-link= |date=2011 |title=सी ++ के लिए एपीआई डिजाइन|url=https://www.google.com/books/edition/API_Design_for_C++/IY29LylT85wC |publisher=Elsevier Science |page=1 |isbn=9780123850041}}</ref> एक दस्तावेज़ या मानक जो वर्णन करता है कि इस तरह के संबंध या इंटरफ़ेस को कैसे बनाया या उपयोग किया जाए, उसे एपीआई विनिर्देश कहा जाता है। एक कंप्यूटर प्रणाली जो इस मानक को पूरा करता है, उसे एपीआई को लागू करने या प्रदर्शित करने के लिए कहा जाता है। एपीआई शब्द विनिर्देश या कार्यान्वयन के लिए संदर्भित हो सकता है। | ||
यूजर इंटरफेस के विपरीत, जो कंप्यूटर को व्यक्ति से जोड़ता है, एप्लिकेशन प्रोग्रामिंग इंटरफेस कंप्यूटर या सॉफ्टवेयर के भागों को एक दूसरे से जोड़ता है। यह एक कंप्यूटर प्रोग्रामर के अलावा किसी अन्य व्यक्ति (अंतिम उपयोगकर्ता) द्वारा सीधे उपयोग किए जाने के लिए अभिप्रेत नहीं है जो इसे सॉफ्टवेयर में सम्मिलित कर रहा है। एक एपीआई प्रायः विभिन्न भागों से बना होता है जो प्रोग्रामर के लिए उपलब्ध उपकरण या सेवाओं के रूप में कार्य करता है। एक प्रोग्राम या प्रोग्रामर जो इन भागों में से एक का उपयोग करता है, उसे एपीआई के उस हिस्से को कॉल करने के लिए कहा जाता है। एपीआई बनाने वाली कॉल को सबरूटीन्स, विधियों, अनुरोधों या समापन बिंदुओं के रूप में भी जाना जाता है। एक एपीआई विनिर्देश इन कॉलों को परिभाषित करता है, जिसका अर्थ है कि यह बताता है कि उनका उपयोग कैसे करें या उन्हें कैसे कार्यान्वित करें। | |||
एपीआई का एक उद्देश्य आंतरिक विवरणों को छिपाना है कि एक प्रणाली कैसे काम करती है, केवल उन हिस्सों को प्रकट करता है जो प्रोग्रामर को उपयोगी लगेगा और आंतरिक विवरण बाद में बदल जाने पर भी उन्हें सुसंगत बनाए रखेगा। एक एपीआई प्रणाली की एक विशेष जोड़ी के लिए कस्टम-निर्मित हो सकता है, या यह एक साझा मानक हो सकता है जो कई प्रणालियों के बीच | एपीआई का एक उद्देश्य आंतरिक विवरणों को छिपाना है कि एक प्रणाली कैसे काम करती है, केवल उन हिस्सों को प्रकट करता है जो प्रोग्रामर को उपयोगी लगेगा और आंतरिक विवरण बाद में बदल जाने पर भी उन्हें सुसंगत बनाए रखेगा। एक एपीआई प्रणाली की एक विशेष जोड़ी के लिए कस्टम-निर्मित हो सकता है, या यह एक साझा मानक हो सकता है जो कई प्रणालियों के बीच अंर्तकार्यकारी को अनुमति देता है। | ||
एपीआई शब्द का प्रयोग प्रायः वेब एपीआई को संदर्भित करने के लिए किया जाता है,<ref name="Lane2019">{{cite web |url=https://blog.postman.com/intro-to-apis-history-of-apis/ |title=एपीआई का परिचय: एपीआई का इतिहास|last=Lane |first=Kin |date=October 10, 2019 |website=Postman |access-date=September 18, 2020 |quote=जब आप "एपीआई" या इसके विस्तारित संस्करण "एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस" सुनते हैं, तो यह लगभग हमेशा हमारे आधुनिक दृष्टिकोण के संदर्भ में होता है, जिसमें हम JSON या XML प्रारूप में मशीन पठनीय डेटा तक पहुंच प्रदान करने के लिए HTTP का उपयोग करते हैं, अक्सर बस "वेब एपीआई" के रूप में जाना जाता है। API लगभग कंप्यूटिंग जितनी लंबी रही हैं, लेकिन आधुनिक वेब API ने 2000 के दशक की शुरुआत में आकार लेना शुरू किया था।}}</ref> जो इंटरनेट से जुड़े कंप्यूटरों के बीच संचार की अनुमति देता है। प्रोग्रामिंग भाषाओं, सॉफ्टवेयर लाइब्रेरी, कंप्यूटर ऑपरेटिंग सिस्टम और कंप्यूटर हार्डवेयर के लिए एपीआई भी हैं। एपीआई की उत्पत्ति 1940 के दशक में हुई थी, हालांकि यह शब्द 1960 और 1970 के दशक तक सामने नहीं आया था। एपीआई में हाल के विकास ने माइक्रोसर्विसेज की लोकप्रियता में वृद्धि की है, जो सार्वजनिक एपीआई के माध्यम से अभिगम की जाने वाली शिथिल युग्मित सेवाएं हैं।<ref>{{cite web |url=https://www.businesswire.com/news/home/20210825005630/en/Global-Cloud-Microservices-Market-2021-to-2026---Growth-Trends-COVID-19-Impact-and-Forecasts---ResearchAndMarkets.com |title=ग्लोबल क्लाउड माइक्रोसर्विसेज मार्केट (2021 से 2026)|last=Wood |first=Laura |date=2021-08-25 |access-date=2022-03-29}}</ref> | एपीआई शब्द का प्रयोग प्रायः वेब एपीआई को संदर्भित करने के लिए किया जाता है,<ref name="Lane2019">{{cite web |url=https://blog.postman.com/intro-to-apis-history-of-apis/ |title=एपीआई का परिचय: एपीआई का इतिहास|last=Lane |first=Kin |date=October 10, 2019 |website=Postman |access-date=September 18, 2020 |quote=जब आप "एपीआई" या इसके विस्तारित संस्करण "एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस" सुनते हैं, तो यह लगभग हमेशा हमारे आधुनिक दृष्टिकोण के संदर्भ में होता है, जिसमें हम JSON या XML प्रारूप में मशीन पठनीय डेटा तक पहुंच प्रदान करने के लिए HTTP का उपयोग करते हैं, अक्सर बस "वेब एपीआई" के रूप में जाना जाता है। API लगभग कंप्यूटिंग जितनी लंबी रही हैं, लेकिन आधुनिक वेब API ने 2000 के दशक की शुरुआत में आकार लेना शुरू किया था।}}</ref> जो इंटरनेट से जुड़े कंप्यूटरों के बीच संचार की अनुमति देता है। प्रोग्रामिंग भाषाओं, सॉफ्टवेयर लाइब्रेरी, कंप्यूटर ऑपरेटिंग सिस्टम और कंप्यूटर हार्डवेयर के लिए एपीआई भी हैं। एपीआई की उत्पत्ति 1940 के दशक में हुई थी, हालांकि यह शब्द 1960 और 1970 के दशक तक सामने नहीं आया था। एपीआई में हाल के विकास ने माइक्रोसर्विसेज की लोकप्रियता में वृद्धि की है, जो सार्वजनिक एपीआई के माध्यम से अभिगम की जाने वाली शिथिल युग्मित सेवाएं हैं।<ref>{{cite web |url=https://www.businesswire.com/news/home/20210825005630/en/Global-Cloud-Microservices-Market-2021-to-2026---Growth-Trends-COVID-19-Impact-and-Forecasts---ResearchAndMarkets.com |title=ग्लोबल क्लाउड माइक्रोसर्विसेज मार्केट (2021 से 2026)|last=Wood |first=Laura |date=2021-08-25 |access-date=2022-03-29}}</ref> | ||
| Line 16: | Line 16: | ||
=== 1940 और 1950 के दशक === | === 1940 और 1950 के दशक === | ||
एपीआई का विचार स्वयं शब्द से बहुत पुराना है। ब्रिटिश कंप्यूटर वैज्ञानिक मौरिस विल्क्स और डेविड व्हीलर ने 1940 के दशक में एक प्रारंभिक कंप्यूटर ईडीएसएसी (EDSAC) के लिए एक मॉड्यूलर सॉफ्टवेयर लाइब्रेरी पर काम किया। इस लाइब्रेरी में सबरूटीन्स को फाइलिंग कैबिनेट में व्यवस्थित पंच पेपर टेप पर संग्रहित किया गया था। इस कैबिनेट में यह भी सम्मिलित है कि विल्क्स और व्हीलर ने प्रत्येक सबरूटीन के बारे में नोट्स की एक "लाइब्रेरी कैटलॉग" को क्या कहा और इसे एक प्रोग्राम में कैसे सम्मिलित किया जाए। आज, इस तरह के कैटलॉग को एपीआई (या एपीआई विनिर्देश या एपीआई दस्तावेज) कहा जाएगा क्योंकि यह एक प्रोग्रामर को निर्देश देता है कि प्रोग्रामर को प्रत्येक सबरूटीन का उपयोग (या "कॉल") कैसे करें।<ref name="Bloch2018" /> | |||
विल्क्स एंड व्हीलर की 1951 की किताब एक इलेक्ट्रॉनिक डिजिटल कंप्यूटर के लिए प्रोग्राम तैयार करने में पहला प्रकाशित एपीआई विनिर्देश सम्मिलित है। जोशुआ बलोच का मानना है कि विल्क्स और व्हीलर ने "अव्यक्त रूप से एपीआई का आविष्कार" किया क्योंकि यह एक ऐसी अवधारणा है जिसे खोजा गया है न कि आविष्कार किया गया है।<ref name="Bloch2018">{{cite speech |last=Bloch |first=Joshua |author-link=Joshua Bloch |title=एपीआई का एक संक्षिप्त, रायशुदा इतिहास|event=QCon |date=August 8, 2018 |location=San Francisco |publisher=InfoQ |url=https://www.infoq.com/presentations/history-api/ |access-date=September 18, 2020}}</ref> | विल्क्स एंड व्हीलर की 1951 की किताब एक इलेक्ट्रॉनिक डिजिटल कंप्यूटर के लिए प्रोग्राम तैयार करने में पहला प्रकाशित एपीआई विनिर्देश सम्मिलित है। जोशुआ बलोच का मानना है कि विल्क्स और व्हीलर ने "अव्यक्त रूप से एपीआई का आविष्कार" किया क्योंकि यह एक ऐसी अवधारणा है जिसे खोजा गया है न कि आविष्कार किया गया है।<ref name="Bloch2018">{{cite speech |last=Bloch |first=Joshua |author-link=Joshua Bloch |title=एपीआई का एक संक्षिप्त, रायशुदा इतिहास|event=QCon |date=August 8, 2018 |location=San Francisco |publisher=InfoQ |url=https://www.infoq.com/presentations/history-api/ |access-date=September 18, 2020}}</ref> | ||
| Line 26: | Line 26: | ||
शब्द "एप्लिकेशन प्रोग्राम इंटरफ़ेस" (बिना -आईएनजी प्रत्यय के) पहली बार 1968 में एएफआईपीएस (AFIPS) सम्मेलन में प्रस्तुत रिमोट कंप्यूटर ग्राफिक्स के लिए डेटा संरचना और तकनीक नामक एक पेपर में दर्ज किया गया था।<ref>{{Cite OED|application program interface}}</ref><ref name="Bloch2018" /> इस पेपर के लेखक इस स्थिति में बाकी कंप्यूटर प्रणाली के साथ एक ग्राफिक प्रोग्राम की परस्पर क्रिया का वर्णन करने के लिए इस शब्द का उपयोग करते हैं। एक सुसंगत एप्लिकेशन इंटरफ़ेस (फोरट्रान सबरूटीन कॉल्स से मिलकर) का उद्देश्य प्रोग्रामर को ग्राफिक्स डिस्प्ले डिवाइस विशिष्टताओं से निपटने से मुक्त करना और कंप्यूटर या डिस्प्ले को बदलने पर हार्डवेयर स्वतंत्रता प्रदान करना था।<ref name="CottonGreatorex1968">{{cite conference |url=https://www.computer.org/csdl/pds/api/csdl/proceedings/download-article/12OmNyRPgFZ/pdf |title=दूरस्थ कंप्यूटर ग्राफिक्स के लिए डेटा संरचनाएं और तकनीकें|last1=Cotton |first1=Ira W. |last2=Greatorex |first2=Frank S. |date=December 1968 |conference=AFIPS 1968 Fall Joint Computer Conference |volume=I |book-title=AFIPS '68: Proceedings of the December 9–11, 1968, Fall Joint Computer Conference |publisher=Association for Computing Machinery |location=San Francisco, California |pages=533–544 |isbn=978-1450378994 |oclc= 1175621908 |doi=10.1145/1476589.1476661 }}</ref> | शब्द "एप्लिकेशन प्रोग्राम इंटरफ़ेस" (बिना -आईएनजी प्रत्यय के) पहली बार 1968 में एएफआईपीएस (AFIPS) सम्मेलन में प्रस्तुत रिमोट कंप्यूटर ग्राफिक्स के लिए डेटा संरचना और तकनीक नामक एक पेपर में दर्ज किया गया था।<ref>{{Cite OED|application program interface}}</ref><ref name="Bloch2018" /> इस पेपर के लेखक इस स्थिति में बाकी कंप्यूटर प्रणाली के साथ एक ग्राफिक प्रोग्राम की परस्पर क्रिया का वर्णन करने के लिए इस शब्द का उपयोग करते हैं। एक सुसंगत एप्लिकेशन इंटरफ़ेस (फोरट्रान सबरूटीन कॉल्स से मिलकर) का उद्देश्य प्रोग्रामर को ग्राफिक्स डिस्प्ले डिवाइस विशिष्टताओं से निपटने से मुक्त करना और कंप्यूटर या डिस्प्ले को बदलने पर हार्डवेयर स्वतंत्रता प्रदान करना था।<ref name="CottonGreatorex1968">{{cite conference |url=https://www.computer.org/csdl/pds/api/csdl/proceedings/download-article/12OmNyRPgFZ/pdf |title=दूरस्थ कंप्यूटर ग्राफिक्स के लिए डेटा संरचनाएं और तकनीकें|last1=Cotton |first1=Ira W. |last2=Greatorex |first2=Frank S. |date=December 1968 |conference=AFIPS 1968 Fall Joint Computer Conference |volume=I |book-title=AFIPS '68: Proceedings of the December 9–11, 1968, Fall Joint Computer Conference |publisher=Association for Computing Machinery |location=San Francisco, California |pages=533–544 |isbn=978-1450378994 |oclc= 1175621908 |doi=10.1145/1476589.1476661 }}</ref> | ||
डेटाबेस के क्षेत्र में इस शब्द का परिचय सी.जे. डेट<ref>{{cite book |last=Date |first=C. J. |author-link=Christopher J. Date |year=2019 |title=ई.एफ. कॉड एंड रिलेशनल थ्योरी: कॉड के मेजर डाटाबेस राइटिंग की एक विस्तृत समीक्षा और विश्लेषण|url=https://books.google.com/books?id=2Sy4DwAAQBAJ&pg=PA135 |page=135 |isbn=978-1684705276}}</ref> ने 1974 में द रिलेशनल एंड नेटवर्क एप्रोचेज़ | डेटाबेस के क्षेत्र में इस शब्द का परिचय सी.जे. डेट<ref>{{cite book |last=Date |first=C. J. |author-link=Christopher J. Date |year=2019 |title=ई.एफ. कॉड एंड रिलेशनल थ्योरी: कॉड के मेजर डाटाबेस राइटिंग की एक विस्तृत समीक्षा और विश्लेषण|url=https://books.google.com/books?id=2Sy4DwAAQBAJ&pg=PA135 |page=135 |isbn=978-1684705276}}</ref> ने 1974 में द रिलेशनल एंड नेटवर्क एप्रोचेज़- कम्पेरिज़न ऑफ़ द एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस नामक एक पेपर में किया था।<ref>{{cite conference |title=संबंधपरक और नेटवर्क दृष्टिकोण: एप्लिकेशन प्रोग्रामिंग इंटरफेस की तुलना|last1=Date |first1=C. J. |last2=Codd |first2=E. F. |date=January 1975 |editor=Randall Rustin |conference=SIGMOD Workshop 1974 |volume=2 |book-title=Proceedings of 1974 ACM-SIGMOD Workshop on Data Description, Access and Control |publisher=Association for Computing Machinery |location=Ann Arbor, Michigan |pages=83–113 |isbn=978-1450374187 |oclc=1175623233 |doi=10.1145/800297.811532 }}</ref> एक एपीआई डेटाबेस प्रबंधन प्रणालियों के लिए एएनएसआई/स्पार्क रूपरेखा का हिस्सा बन गया। इस रूपरेखा ने एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस को अन्य इंटरफेस, जैसे कि जांच इंटरफ़ेस से अलग से व्यवहार किया। 1970 के दशक में डाटाबेस पेशेवरों ने देखा कि इन विभिन्न इंटरफेसों को जोड़ा जा सकता है पर्याप्त रूप से समृद्ध एप्लिकेशन इंटरफ़ेस अन्य इंटरफेसों का भी समर्थन कर सकता है।<ref name="NBS1981" /> | ||
इस अवलोकन ने एपीआई का नेतृत्व किया जो सभी प्रकार की प्रोग्रामिंग का समर्थन करता था, न कि केवल एप्लिकेशन प्रोग्रामिंग का। | इस अवलोकन ने एपीआई का नेतृत्व किया जो सभी प्रकार की प्रोग्रामिंग का समर्थन करता था, न कि केवल एप्लिकेशन प्रोग्रामिंग का। | ||
| Line 38: | Line 38: | ||
2000 में यूसी इरविन में रॉय फील्डिंग के शोध प्रबंध आर्किटेक्चरल स्टाइल्स और नेटवर्क-आधारित सॉफ़्टवेयर आर्किटेक्चर के डिज़ाइन ने प्रतिनिधित्ववादी स्थिति में स्थानांतरण (आरईएसटी) को रेखांकित किया और "नेटवर्क-आधारित एप्लिकेशन प्रोग्रामिंग इंटरफेस" के विचार का वर्णन किया, जो फील्डिंग पारंपरिक "लाइब्रेरी-आधारित" एपीआई के विपरीत है।<ref>{{cite thesis |last=Fielding |first=Roy |date=2000 |title=वास्तुकला शैलियाँ और नेटवर्क-आधारित सॉफ़्टवेयर आर्किटेक्चर का डिज़ाइन|type=PhD |url=https://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm |access-date=September 18, 2020}}</ref> एक्सएमएल (XML) और जेएसओएन (JSON) वेब एपीआई ने 2000 में व्यापक व्यावसायिक स्वीकृति देखी और 2022 तक जारी रही। वेब एपीआई अब एपीआई शब्द का सबसे सामान्य अर्थ है।<ref name="Lane2019" /> | 2000 में यूसी इरविन में रॉय फील्डिंग के शोध प्रबंध आर्किटेक्चरल स्टाइल्स और नेटवर्क-आधारित सॉफ़्टवेयर आर्किटेक्चर के डिज़ाइन ने प्रतिनिधित्ववादी स्थिति में स्थानांतरण (आरईएसटी) को रेखांकित किया और "नेटवर्क-आधारित एप्लिकेशन प्रोग्रामिंग इंटरफेस" के विचार का वर्णन किया, जो फील्डिंग पारंपरिक "लाइब्रेरी-आधारित" एपीआई के विपरीत है।<ref>{{cite thesis |last=Fielding |first=Roy |date=2000 |title=वास्तुकला शैलियाँ और नेटवर्क-आधारित सॉफ़्टवेयर आर्किटेक्चर का डिज़ाइन|type=PhD |url=https://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm |access-date=September 18, 2020}}</ref> एक्सएमएल (XML) और जेएसओएन (JSON) वेब एपीआई ने 2000 में व्यापक व्यावसायिक स्वीकृति देखी और 2022 तक जारी रही। वेब एपीआई अब एपीआई शब्द का सबसे सामान्य अर्थ है।<ref name="Lane2019" /> | ||
2001 में टिम बर्नर्स-ली द्वारा प्रस्तावित सिमेंटिक वेब में "सिमेंटिक एपीआई" सम्मिलित था जो एपीआई को एक सॉफ्टवेयर व्यवहार इंटरफेस के स्थान पर एक खुले वितरित डेटा इंटरफेस के रूप में पुन: प्रस्तुत करता है।<ref>{{cite journal |last1=Dotsika |first1=Fefie |date=August 2010 |title=सिमेंटिक एपीआई: सिमेंटिक वेब की ओर बढ़ रहा है|journal=International Journal of Information Management |volume=30 |issue=4 |pages=335–342 |doi=10.1016/j.ijinfomgt.2009.12.003 }}</ref> स्वामित्व इंटरफेस और एजेंट खुले इंटरफेस की तुलना में अधिक व्यापक हो गए लेकिन डेटा इंटरफेस के रूप में एपीआई के विचार ने जोर पकड़ लिया। क्योंकि वेब एपीआई का व्यापक रूप से सभी प्रकार के ऑनलाइन डेटा के आदान-प्रदान के लिए उपयोग किया जाता है, एपीआई एक व्यापक शब्द बन गया है जो इंटरनेट पर अधिकांश संचार का वर्णन करता है।<ref name="JinSahniShevat2018" /> जब इस तरह से उपयोग किया जाता है, तो एपीआई शब्द का अर्थ संचार प्रोटोकॉल शब्द के साथ अधिव्याप्त होता है।== उपयोग == | 2001 में टिम बर्नर्स-ली द्वारा प्रस्तावित सिमेंटिक वेब में "सिमेंटिक एपीआई" सम्मिलित था जो एपीआई को एक सॉफ्टवेयर व्यवहार इंटरफेस के स्थान पर एक खुले वितरित डेटा इंटरफेस के रूप में पुन: प्रस्तुत करता है।<ref>{{cite journal |last1=Dotsika |first1=Fefie |date=August 2010 |title=सिमेंटिक एपीआई: सिमेंटिक वेब की ओर बढ़ रहा है|journal=International Journal of Information Management |volume=30 |issue=4 |pages=335–342 |doi=10.1016/j.ijinfomgt.2009.12.003 }}</ref> स्वामित्व इंटरफेस और एजेंट खुले इंटरफेस की तुलना में अधिक व्यापक हो गए लेकिन डेटा इंटरफेस के रूप में एपीआई के विचार ने जोर पकड़ लिया। क्योंकि वेब एपीआई का व्यापक रूप से सभी प्रकार के ऑनलाइन डेटा के आदान-प्रदान के लिए उपयोग किया जाता है, एपीआई एक व्यापक शब्द बन गया है जो इंटरनेट पर अधिकांश संचार का वर्णन करता है।<ref name="JinSahniShevat2018" /> जब इस तरह से उपयोग किया जाता है, तो एपीआई शब्द का अर्थ संचार प्रोटोकॉल शब्द के साथ अधिव्याप्त होता है। | ||
== उपयोग == | |||
=== लाइब्रेरी और रूपरेखा === | === लाइब्रेरी और रूपरेखा === | ||
| Line 84: | Line 86: | ||
}}</ref> | }}</ref> | ||
एपीआई एक एप्लिकेशन बाइनरी इंटरफ़ेस (एबीआई) से अलग है जिसमें एपीआई स्रोत कोड आधारित है जबकि एबीआई बाइनरी आधारित है। उदाहरण के लिए, पीओएसआईएक्स (POSIX) एपीआई प्रदान करता है जबकि लिनक्स मानक आधार एबीआई प्रदान करता है।<ref>{{cite web| | |||
url=http://www.linuxfoundation.org/collaborate/workgroups/lsb/lsb-introduction| | url=http://www.linuxfoundation.org/collaborate/workgroups/lsb/lsb-introduction| | ||
title=LSB Introduction| | title=LSB Introduction| | ||
| Line 264: | Line 266: | ||
{{Operating system}} | {{Operating system}} | ||
[[Category:Articles with hatnote templates targeting a nonexistent page]] | |||
[[Category:Articles with short description]] | |||
[[Category:CS1 English-language sources (en)]] | |||
[[Category:CS1 français-language sources (fr)]] | |||
[[Category:CS1 maint]] | |||
[[Category:CS1 Ελληνικά-language sources (el)]] | |||
[[Category:Citation Style 1 templates|W]] | |||
[[Category:Collapse templates]] | |||
[[Category:Created On 16/12/2022]] | |||
[[Category:Lua-based templates]] | |||
[[Category:Machine Translated Page]] | |||
[[Category:Missing redirects]] | |||
[[Category:Multi-column templates]] | |||
[[Category:Navigational boxes| ]] | |||
[[Category:Navigational boxes without horizontal lists]] | |||
[[Category:Pages using div col with small parameter]] | |||
[[Category:Pages with script errors]] | |||
[[Category:Short description with empty Wikidata description]] | |||
[[Category:Sidebars with styles needing conversion]] | |||
[[Category:Template documentation pages|Documentation/doc]] | |||
[[Category:Templates Vigyan Ready]] | |||
[[Category:Templates based on the Citation/CS1 Lua module]] | |||
[[Category:Templates generating COinS|Cite web]] | |||
[[Category:Templates generating microformats]] | |||
[[Category:Templates that add a tracking category]] | |||
[[Category:Templates that are not mobile friendly]] | |||
[[Category:Templates that generate short descriptions]] | |||
[[Category:Templates used by AutoWikiBrowser|Cite web]] | |||
[[Category:Templates using TemplateData]] | |||
[[Category:Templates using under-protected Lua modules]] | |||
[[Category:Wikipedia fully protected templates|Div col]] | |||
[[Category:Wikipedia metatemplates]] | |||
[[Category:अनुप्रयोग प्रोग्रामिंग इंटरफेस| ]] | [[Category:अनुप्रयोग प्रोग्रामिंग इंटरफेस| ]] | ||
[[Category:तकनीकी संचार]] | [[Category:तकनीकी संचार]] | ||
Latest revision as of 16:48, 28 August 2023
एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस (एपीआई) दो या दो से अधिक कंप्यूटर प्रोग्रामों के लिए एक दूसरे के साथ संवाद करने का एक तरीका है। यह एक प्रकार का सॉफ़्टवेयर इंटरफ़ेस है, जो सॉफ़्टवेयर के अन्य भागों को सेवा प्रदान करता है।[1] एक दस्तावेज़ या मानक जो वर्णन करता है कि इस तरह के संबंध या इंटरफ़ेस को कैसे बनाया या उपयोग किया जाए, उसे एपीआई विनिर्देश कहा जाता है। एक कंप्यूटर प्रणाली जो इस मानक को पूरा करता है, उसे एपीआई को लागू करने या प्रदर्शित करने के लिए कहा जाता है। एपीआई शब्द विनिर्देश या कार्यान्वयन के लिए संदर्भित हो सकता है।
यूजर इंटरफेस के विपरीत, जो कंप्यूटर को व्यक्ति से जोड़ता है, एप्लिकेशन प्रोग्रामिंग इंटरफेस कंप्यूटर या सॉफ्टवेयर के भागों को एक दूसरे से जोड़ता है। यह एक कंप्यूटर प्रोग्रामर के अलावा किसी अन्य व्यक्ति (अंतिम उपयोगकर्ता) द्वारा सीधे उपयोग किए जाने के लिए अभिप्रेत नहीं है जो इसे सॉफ्टवेयर में सम्मिलित कर रहा है। एक एपीआई प्रायः विभिन्न भागों से बना होता है जो प्रोग्रामर के लिए उपलब्ध उपकरण या सेवाओं के रूप में कार्य करता है। एक प्रोग्राम या प्रोग्रामर जो इन भागों में से एक का उपयोग करता है, उसे एपीआई के उस हिस्से को कॉल करने के लिए कहा जाता है। एपीआई बनाने वाली कॉल को सबरूटीन्स, विधियों, अनुरोधों या समापन बिंदुओं के रूप में भी जाना जाता है। एक एपीआई विनिर्देश इन कॉलों को परिभाषित करता है, जिसका अर्थ है कि यह बताता है कि उनका उपयोग कैसे करें या उन्हें कैसे कार्यान्वित करें।
एपीआई का एक उद्देश्य आंतरिक विवरणों को छिपाना है कि एक प्रणाली कैसे काम करती है, केवल उन हिस्सों को प्रकट करता है जो प्रोग्रामर को उपयोगी लगेगा और आंतरिक विवरण बाद में बदल जाने पर भी उन्हें सुसंगत बनाए रखेगा। एक एपीआई प्रणाली की एक विशेष जोड़ी के लिए कस्टम-निर्मित हो सकता है, या यह एक साझा मानक हो सकता है जो कई प्रणालियों के बीच अंर्तकार्यकारी को अनुमति देता है।
एपीआई शब्द का प्रयोग प्रायः वेब एपीआई को संदर्भित करने के लिए किया जाता है,[2] जो इंटरनेट से जुड़े कंप्यूटरों के बीच संचार की अनुमति देता है। प्रोग्रामिंग भाषाओं, सॉफ्टवेयर लाइब्रेरी, कंप्यूटर ऑपरेटिंग सिस्टम और कंप्यूटर हार्डवेयर के लिए एपीआई भी हैं। एपीआई की उत्पत्ति 1940 के दशक में हुई थी, हालांकि यह शब्द 1960 और 1970 के दशक तक सामने नहीं आया था। एपीआई में हाल के विकास ने माइक्रोसर्विसेज की लोकप्रियता में वृद्धि की है, जो सार्वजनिक एपीआई के माध्यम से अभिगम की जाने वाली शिथिल युग्मित सेवाएं हैं।[3]
उद्देश्य
अनुप्रयोगों के निर्माण में, एक एपीआई अंतर्निहित कार्यान्वयन को सारणित करके प्रोग्रामिंग को सरल बनाता है और केवल उन वस्तुओं या कार्यों को प्रकट करता है जिनकी डेवलपर को आवश्यकता होती है। जबकि एक ईमेल क्लाइंट के लिए ग्राफिकल इंटरफ़ेस उपयोगकर्ता को एक बटन प्रदान कर सकता है जो नए ईमेल लाने और स्पष्ट करने के लिए सभी चरणों का पालन करता है, फ़ाइल इनपुट/आउटपुट के लिए एक एपीआई डेवलपर को एक ऐसा फ़ंक्शन दे सकता है जो फ़ाइल को एक स्थान से दूसरे स्थान पर कॉपी करता है इस आवश्यकता के बिना कि डेवलपर दृश्यों के पीछे होने वाली फाइल प्रणाली संचालन को समझता है।[4]
शब्द का इतिहास
एपीआई शब्द प्रारम्भ में केवल एंड-यूज़र-फेसिंग प्रोग्राम के लिए एक इंटरफ़ेस का वर्णन करता है, जिसे एप्लिकेशन प्रोग्राम के रूप में जाना जाता है। यह उत्पत्ति अभी भी "एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस" के नाम से परिलक्षित होती है। आज, यह शब्द व्यापक है, जिसमें उपयोगिता (यूटिलिटी) सॉफ्टवेयर और यहां तक कि हार्डवेयर इंटरफेस भी सम्मिलित हैं।[6]
1940 और 1950 के दशक
एपीआई का विचार स्वयं शब्द से बहुत पुराना है। ब्रिटिश कंप्यूटर वैज्ञानिक मौरिस विल्क्स और डेविड व्हीलर ने 1940 के दशक में एक प्रारंभिक कंप्यूटर ईडीएसएसी (EDSAC) के लिए एक मॉड्यूलर सॉफ्टवेयर लाइब्रेरी पर काम किया। इस लाइब्रेरी में सबरूटीन्स को फाइलिंग कैबिनेट में व्यवस्थित पंच पेपर टेप पर संग्रहित किया गया था। इस कैबिनेट में यह भी सम्मिलित है कि विल्क्स और व्हीलर ने प्रत्येक सबरूटीन के बारे में नोट्स की एक "लाइब्रेरी कैटलॉग" को क्या कहा और इसे एक प्रोग्राम में कैसे सम्मिलित किया जाए। आज, इस तरह के कैटलॉग को एपीआई (या एपीआई विनिर्देश या एपीआई दस्तावेज) कहा जाएगा क्योंकि यह एक प्रोग्रामर को निर्देश देता है कि प्रोग्रामर को प्रत्येक सबरूटीन का उपयोग (या "कॉल") कैसे करें।[6]
विल्क्स एंड व्हीलर की 1951 की किताब एक इलेक्ट्रॉनिक डिजिटल कंप्यूटर के लिए प्रोग्राम तैयार करने में पहला प्रकाशित एपीआई विनिर्देश सम्मिलित है। जोशुआ बलोच का मानना है कि विल्क्स और व्हीलर ने "अव्यक्त रूप से एपीआई का आविष्कार" किया क्योंकि यह एक ऐसी अवधारणा है जिसे खोजा गया है न कि आविष्कार किया गया है।[6]
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] कहता है कि "एपीआई के उपयोगकर्ताओं की पर्याप्त संख्या के साथ इससे कोई फर्क नहीं पड़ता कि आप अनुबंध में क्या वादा करते हैं- आपकी प्रणाली के सभी अवलोकन योग्य व्यवहार किसी के द्वारा निर्भर होंगे।" इस बीच, कई अ