एपीआई: Difference between revisions

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


एपीआई शब्द का प्रयोग प्रायः वेब एपीआई को संदर्भित करने के लिए किया जाता है,<ref name="Lane2019"/> जो इंटरनेट से जुड़े कंप्यूटरों के बीच संचार की अनुमति देता है। प्रोग्रामिंग भाषाओं, सॉफ्टवेयर लाइब्रेरी, कंप्यूटर ऑपरेटिंग सिस्टम और कंप्यूटर हार्डवेयर के लिए एपीआई भी हैं। एपीआई की उत्पत्ति 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>
== उद्देश्य ==
== उद्देश्य ==
अनुप्रयोगों के निर्माण में, एक एपीआई अंतर्निहित कार्यान्वयन को सारणित करके प्रोग्रामिंग को सरल बनाता है और केवल उन वस्तुओं या कार्यों को प्रकट करता है जिनकी डेवलपर को आवश्यकता होती है। जबकि एक ईमेल क्लाइंट के लिए ग्राफिकल इंटरफ़ेस उपयोगकर्ता को एक बटन प्रदान कर सकता है जो नए ईमेल लाने और स्पष्ट करने के लिए सभी चरणों का पालन करता है, फ़ाइल इनपुट/आउटपुट के लिए एक एपीआई डेवलपर को एक ऐसा फ़ंक्शन दे सकता है जो फ़ाइल को एक स्थान से दूसरे स्थान पर कॉपी करता है इस आवश्यकता के बिना कि डेवलपर दृश्यों के पीछे होने वाली फाइल प्रणाली संचालन को समझता है।<ref name="Clarke4">{{Cite web |url=http://www.drdobbs.com/windows/measuring-api-usability/184405654 |title=मापने एपीआई उपयोगिता|last=Clarke |first=Steven |date=2004 |website=Dr. Dobb's |access-date=29 July 2016}}</ref>
अनुप्रयोगों के निर्माण में, एक एपीआई अंतर्निहित कार्यान्वयन को सारणित करके प्रोग्रामिंग को सरल बनाता है और केवल उन वस्तुओं या कार्यों को प्रकट करता है जिनकी डेवलपर को आवश्यकता होती है। जबकि एक ईमेल क्लाइंट के लिए ग्राफिकल इंटरफ़ेस उपयोगकर्ता को एक बटन प्रदान कर सकता है जो नए ईमेल लाने और स्पष्ट करने के लिए सभी चरणों का पालन करता है, फ़ाइल इनपुट/आउटपुट के लिए एक एपीआई डेवलपर को एक ऐसा फ़ंक्शन दे सकता है जो फ़ाइल को एक स्थान से दूसरे स्थान पर कॉपी करता है इस आवश्यकता के बिना कि डेवलपर दृश्यों के पीछे होने वाली फाइल प्रणाली संचालन को समझता है।<ref name="Clarke4">{{Cite web |url=http://www.drdobbs.com/windows/measuring-api-usability/184405654 |title=मापने एपीआई उपयोगिता|last=Clarke |first=Steven |date=2004 |website=Dr. Dobb's |access-date=29 July 2016}}</ref>
== शब्द का इतिहास ==
== शब्द का इतिहास ==


[[File:Database_management_system_diagram_from_1978_workshop.png|thumb|left|1978 का एक रेखाचित्र, केवल एप्लिकेशन प्रोग्राम से परे, एक सामान्य प्रोग्रामिंग इंटरफ़ेस बनने के लिए एपीआई के विचार के विस्तार का प्रस्ताव करता है।<ref name="NBS1981" />]]एपीआई शब्द प्रारम्भ में केवल एंड-यूज़र-फेसिंग प्रोग्राम के लिए एक इंटरफ़ेस का वर्णन करता है, जिसे एप्लिकेशन प्रोग्राम के रूप में जाना जाता है। यह उत्पत्ति अभी भी "एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस" के नाम से परिलक्षित होती है। आज, यह शब्द व्यापक है, जिसमें उपयोगिता (यूटिलिटी) सॉफ्टवेयर और यहां तक कि हार्डवेयर इंटरफेस भी सम्मिलित हैं।<ref name="Bloch2018" />
[[File:Database_management_system_diagram_from_1978_workshop.png|thumb|left|1978 का एक रेखाचित्र, केवल एप्लिकेशन प्रोग्राम से परे, एक सामान्य प्रोग्रामिंग इंटरफ़ेस बनने के लिए एपीआई के विचार के विस्तार का प्रस्ताव करता है।<ref name="NBS1981">{{cite report |date=April 1981 |title=डाटाबेस आर्किटेक्चर - एक व्यवहार्यता कार्यशाला|url=https://hdl.handle.net/2027/mdp.39015077587742?urlappend=%3Bseq=53 |publisher=U.S. Department of Commerce, National Bureau of Standards |pages=45–47 |access-date=September 18, 2020 |location=Washington, DC|hdl=2027/mdp.39015077587742?urlappend=%3Bseq=53 |id=NBS special publication 500-76 |lccn=81600004}}</ref>]]एपीआई शब्द प्रारम्भ में केवल एंड-यूज़र-फेसिंग प्रोग्राम के लिए एक इंटरफ़ेस का वर्णन करता है, जिसे एप्लिकेशन प्रोग्राम के रूप में जाना जाता है। यह उत्पत्ति अभी भी "एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस" के नाम से परिलक्षित होती है। आज, यह शब्द व्यापक है, जिसमें उपयोगिता (यूटिलिटी) सॉफ्टवेयर और यहां तक कि हार्डवेयर इंटरफेस भी सम्मिलित हैं।<ref name="Bloch2018" />
=== 1940 और 1950 के दशक ===
=== 1940 और 1950 के दशक ===


Line 24: Line 24:
=== 1960 और 1970 के दशक ===
=== 1960 और 1970 के दशक ===


टर्म एप्लिकेशन प्रोग्राम इंटरफ़ेस (बिना -इंग प्रत्यय के) पहली बार 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 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" />  


यह शब्द डेटाबेस के क्षेत्र में क्रिस्टोफर जे. डेट|सी द्वारा पेश किया गया था। जे दिनांक<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> एक एपीआई ANSI-SPARC आर्किटेक्चर| डेटाबेस प्रबंधन प्रणालियों के लिए ANSI/SPARC फ्रेमवर्क का एक हिस्सा बन गया। इस ढांचे ने एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस को अन्य इंटरफेस, जैसे कि क्वेरी इंटरफ़ेस से अलग से व्यवहार किया। 1970 के दशक में डेटाबेस पेशेवरों ने देखा कि इन विभिन्न इंटरफेस को जोड़ा जा सकता है; पर्याप्त रूप से समृद्ध एप्लिकेशन इंटरफ़ेस अन्य इंटरफेस का भी समर्थन कर सकता है।<ref name="NBS1981">{{cite report |date=April 1981 |title=डाटाबेस आर्किटेक्चर - एक व्यवहार्यता कार्यशाला|url=https://hdl.handle.net/2027/mdp.39015077587742?urlappend=%3Bseq=53 |publisher=U.S. Department of Commerce, National Bureau of Standards |pages=45–47 |access-date=September 18, 2020 |location=Washington, DC|hdl=2027/mdp.39015077587742?urlappend=%3Bseq=53 |id=NBS special publication 500-76 |lccn=81600004}}</ref>
इस अवलोकन ने एपीआई का नेतृत्व किया जो सभी प्रकार की प्रोग्रामिंग का समर्थन करता था, न कि केवल एप्लिकेशन प्रोग्रामिंग का।
इस अवलोकन ने एपीआई का नेतृत्व किया जो सभी प्रकार की प्रोग्रामिंग का समर्थन करता था, न कि केवल एप्लिकेशन प्रोग्रामिंग का।


=== 1990 के दशक ===
=== 1990 के दशक ===
1990 तक, एपीआई को टेक्नोलॉजिस्ट कार्ल मालामुद द्वारा कुछ कार्यों को करने के लिए एक प्रोग्रामर के लिए उपलब्ध सेवाओं के एक सेट के रूप में परिभाषित किया गया था।<ref>{{cite book |last=Carl |first=Malamud |author-link=Carl Malamud |date=1990 |title=नोवेल नेटवर्क का विश्लेषण|url=https://babel.hathitrust.org/cgi/pt?id=mdp.39015018454903&seq=314 |publisher=Van Nostrand Reinhold |page=294 |isbn=978-0442003647}}</ref>
1990 तक, प्रौद्योगिकीविद् कार्ल मलामुद द्वारा एपीआई को "कुछ कार्यों को करने के लिए एक प्रोग्रामर के लिए उपलब्ध सेवाओं का एक सेट" के रूप में परिभाषित किया गया था।<ref>{{cite book |last=Carl |first=Malamud |author-link=Carl Malamud |date=1990 |title=नोवेल नेटवर्क का विश्लेषण|url=https://babel.hathitrust.org/cgi/pt?id=mdp.39015018454903&seq=314 |publisher=Van Nostrand Reinhold |page=294 |isbn=978-0442003647}}</ref>
दूरस्थ प्रक्रिया कॉल और वेब एपीआई की शुरुआत के साथ एपीआई के विचार को फिर से विस्तारित किया गया। चूंकि 1970 और 1980 के दशक में कंप्यूटर नेटवर्क आम हो गए थे, प्रोग्रामर न केवल अपने स्थानीय कंप्यूटरों पर स्थित पुस्तकालयों को बुलाना चाहते थे बल्कि अन्यत्र स्थित कंप्यूटरों पर भी कॉल करना चाहते थे। इन दूरस्थ प्रक्रिया कॉलों को विशेष रूप से जावा (प्रोग्रामिंग भाषा) भाषा द्वारा समर्थित किया गया था। 1990 के दशक में, इंटरनेट के प्रसार के साथ, CORBA, कंपोनेंट ऑब्जेक्ट मॉडल और डिस्ट्रिब्यूटेड कंपोनेंट ऑब्जेक्ट मॉडल जैसे मानकों ने API सेवाओं को उजागर करने का सबसे आम तरीका बनने के लिए प्रतिस्पर्धा की।<ref name="JinSahniShevat2018">{{cite book  |first1=Brenda |last1=Jin |first2=Saurabh |last2=Sahni |first3=Amir |last3=Shevat |year=2018 |title=डिजाइनिंग वेब एपीआई|url=https://www.google.com/books/edition/Designing_Web_APIs/Dg1rDwAAQBAJ |location= |publisher=O'Reilly Media |isbn=9781492026877}}</ref>
 
दूरस्थ प्रक्रिया कॉल और वेब एपीआई का प्रारम्भ के साथ एपीआई के विचार को फिर से विस्तारित किया गया। चूंकि 1970 और 1980 के दशक में कंप्यूटर नेटवर्क सामान्य हो गए थे, प्रोग्रामर न केवल अपने स्थानीय कंप्यूटरों पर बल्कि अन्यत्र स्थित कंप्यूटरों पर स्थित लाइब्रेरी को कॉल चाहते थे ये दूरस्थ प्रक्रिया कॉल विशेष रूप से जावा भाषा द्वारा अच्छी तरह से समर्थित थे। 1990 के दशक में, इंटरनेट के प्रसार के साथ, कोरबा (CORBA), कॉम (COM), और डीकॉम (DCOM) जैसे मानकों ने एपीआई सेवाओं को प्रकट करने का सबसे सामान्य तरीका बनने के लिए प्रतिस्पर्धा की।<ref name="JinSahniShevat2018">{{cite book  |first1=Brenda |last1=Jin |first2=Saurabh |last2=Sahni |first3=Amir |last3=Shevat |year=2018 |title=डिजाइनिंग वेब एपीआई|url=https://www.google.com/books/edition/Designing_Web_APIs/Dg1rDwAAQBAJ |location= |publisher=O'Reilly Media |isbn=9781492026877}}</ref>
=== 2000 के दशक ===
=== 2000 के दशक ===


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 वेब APIs ने 2000 में व्यापक व्यावसायिक स्वीकृति देखी और 2022 तक जारी रही। वेब API अब API शब्द का सबसे सामान्य अर्थ है।<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>
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" /> जब इस तरह से उपयोग किया जाता है, तो एपीआई शब्द का अर्थ संचार प्रोटोकॉल शब्द के साथ अधिव्याप्त होता है।== उपयोग ==
 
=== लाइब्रेरी और रूपरेखा ===
सॉफ्टवेयर लाइब्रेरी का इंटरफ़ेस एक प्रकार का एपीआई है। एपीआई "अपेक्षित व्यवहार" (एक विनिर्देश) का वर्णन करता और निर्धारित करता है, जबकि लाइब्रेरी नियमों के इस सेट का "वास्तविक कार्यान्वयन" है।
 
एक ही प्रोग्रामिंग इंटरफेस को साझा करने वाली विभिन्न लाइब्रेरी के रूप में एक एकल एपीआई में कई कार्यान्वयन (या कोई नहीं, निराकार होने) हो सकते हैं।
 
एपीआई को इसके कार्यान्वयन से अलग करने से एक भाषा में लिखे गए प्रोग्राम को दूसरी भाषा में लिखी गई लाइब्रेरी का उपयोग करने की अनुमति मिल सकती है। उदाहरण के लिए, क्योंकि स्काला और जावा संगत बाइटकोड को संकलित करते हैं, स्काला डेवलपर्स किसी भी जावा एपीआई का लाभ उठा सकते हैं।<ref name="OderskySpoonVenners8">{{Cite web |url=http://www.artima.com/pins1ed/combining-scala-and-java.html |title=स्काला और जावा का संयोजन|last1=Odersky |first1=Martin |last2=Spoon |first2=Lex |date=10 December 2008 |website=www.artima.com |access-date=29 July 2016 |last3=Venners |first3=Bill}}</ref>


== उपयोग ==
एपीआई का उपयोग सम्मिलित प्रोग्रामिंग भाषा के प्रकार के आधार पर भिन्न हो सकता है। लुआ जैसी प्रक्रियात्मक भाषा के लिए एक एपीआई में मुख्य रूप से कोड को निष्पादित करने, डेटा में हेरफेर करने या त्रुटियों को संभालने के लिए बुनियादी दिनचर्या सम्मिलित हो सकती हैं, जबकि ऑब्जेक्ट-ओरिएंटेड भाषा के लिए एक एपीआई, जैसे कि जावा, कक्षाओं और इसकी कक्षा विधियों का एक विनिर्देश प्रदान करेगा।<ref>{{cite journal |last1=de Figueiredo |first1=Luiz Henrique |author-link2=Roberto Ierusalimschy |last2=Ierusalimschy |first2=Roberto |last3=Filho |first3=Waldemar Celes |title=अनुप्रयोगों के विस्तार के लिए एक भाषा का डिजाइन और कार्यान्वयन|url=https://www.researchgate.net/publication/2778436 |journal=TeCGraf Grupo de Tecnologia Em Computacao Grafica |year=1994 |pages=273–284 |citeseerx=10.1.1.47.5194 |s2cid=59833827 |access-date=29 July 2016}}</ref><ref name="Sintes16">{{cite web |last1=Sintes |first1=Tony |date=2001-07-13 |df=dmy |url=https://www.infoworld.com/article/2077392/just-what-is-the-java-api-anyway.html |title=वैसे भी जावा एपीआई क्या है?|website=[[JavaWorld]] |access-date=2020-07-18}}</ref> हिरुम का नियम<ref>{{Cite book|editor-last=Winters|editor-first=Titus |title=Google पर सॉफ़्टवेयर इंजीनियरिंग: समय के साथ प्रोग्रामिंग से सीखे गए पाठ|date=2020|editor2=Tom Manshreck |editor3=Hyrum Wright|isbn=9781492082798 |location=Sebastopol, CA|oclc=1144086840}}</ref> कहता है कि "एपीआई के उपयोगकर्ताओं की पर्याप्त संख्या के साथ इससे कोई फर्क नहीं पड़ता कि आप अनुबंध में क्या वादा करते हैं- आपकी प्रणाली के सभी अवलोकन योग्य व्यवहार किसी के द्वारा निर्भर होंगे।" इस बीच, कई अध्ययनों से पता चलता है कि एपीआई का उपयोग करने वाले अधिकांश एप्लिकेशन एपीआई के एक छोटे से हिस्से का उपयोग करते हैं।<ref>{{Cite conference |last1=Mastrangelo|first1=Luis|last2=Ponzanelli|first2=Luca|last3=Mocci|first3=Andrea|last4=Lanza|first4=Michele|last5=Hauswirth|first5=Matthias|last6=Nystrom|first6=Nathaniel|date=2015-10-23|title=अपने जोखिम पर प्रयोग करें: जंगली में जावा असुरक्षित एपीआई|book-title=Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications|series=OOPSLA 2015|location=New York, NY, USA|publisher=Association for Computing Machinery|pages=695–710|doi=10.1145/2814270.2814313|isbn=978-1-4503-3689-5}}</ref> एपीआई का उपयोग वास्तव में उपयोगकर्ताओं की संख्या के साथ-साथ एपीआई की लोकप्रियता पर निर्भर करता है।<ref>{{Cite journal|last1=Harrand|first1=Nicolas|last2=Benelallam|first2=Amine|last3=Soto-Valero|first3=César|last4=Bettega|first4=François|last5=Barais|first5=Olivier|last6=Baudry|first6=Benoit|date=2022-02-01|title=एपीआई सौंदर्य ग्राहकों की नजर में है: 2.2 मिलियन मावेन निर्भरता क्लाइंट-एपीआई उपयोगों के स्पेक्ट्रम को प्रकट करती है|journal=Journal of Systems and Software|language=en|volume=184|pages=111134|doi=10.1016/j.jss.2021.111134 |doi-access=free |issn=0164-1212}}</ref>


=== पुस्तकालय और चौखटे ===
भाषा बंधन (लैंग्वेज बाइंडिंग) भी एपीआई हैं। भाषा की विशेषताओं और क्षमताओं को दूसरी भाषा में कार्यान्वित इंटरफ़ेस से मैप करके, भाषा बंधन एक भाषा में लिखी गई लाइब्रेरी या सेवा को दूसरी भाषा में विकसित करते समय उपयोग करने की अनुमति देता है।<ref name="Emery">{{Cite web |url=https://washingtonindependent.com/what-you-should-know-about-standards-apis-interfaces-and-bindings/ |title=आपको मानकों, एपीआई, इंटरफेस और बाइंडिंग के बारे में क्या पता होना चाहिए|last=Mclaughlin |first=Stefano |publisher=washingtonindependent.com|date= 20 December 1996}}</ref>
लाइब्रेरी (कंप्यूटिंग) का इंटरफ़ेस एक प्रकार का एपीआई है। एपीआई अपेक्षित व्यवहार (एक विनिर्देश) का वर्णन करता है और निर्धारित करता है, जबकि पुस्तकालय नियमों के इस सेट का वास्तविक कार्यान्वयन है।


एक ही प्रोग्रामिंग इंटरफेस को साझा करने वाले विभिन्न पुस्तकालयों के रूप में एक एकल एपीआई में कई कार्यान्वयन (या कोई नहीं, सार हो सकता है) हो सकता है।
एसडब्ल्यूआईजी (SWIG) और एफ2पीवाई (F2PY) और जैसे फोरट्रान-से-पायथन इंटरफेस जनित्र ऐसे इंटरफेस के निर्माण की सुविधा प्रदान करते हैं।<ref>{{Cite web |url=http://www.f2py.org/ |title=फ2प्य.ऑर्ग|publisher=फ2प्य.ऑर्ग|access-date=2011-12-18}}</ref>


एपीआई को इसके कार्यान्वयन से अलग करने से एक भाषा में लिखे प्रोग्राम को दूसरी भाषा में लिखे गए पुस्तकालय का उपयोग करने की अनुमति मिल सकती है। उदाहरण के लिए, क्योंकि स्काला (प्रोग्रामिंग लैंग्वेज) और जावा (प्रोग्रामिंग लैंग्वेज) संगत बायटेकोड के लिए संकलित हैं, स्काला डेवलपर्स किसी भी जावा एपीआई का लाभ उठा सकते हैं।<ref name="OderskySpoonVenners8">{{Cite web |url=http://www.artima.com/pins1ed/combining-scala-and-java.html |title=स्काला और जावा का संयोजन|last1=Odersky |first1=Martin |last2=Spoon |first2=Lex |date=10 December 2008 |website=www.artima.com |access-date=29 July 2016 |last3=Venners |first3=Bill}}</ref>
एक एपीआई एक सॉफ्टवेयर रूपरेखा से भी संबंधित हो सकता है- एक रूपरेखा कई लाइब्रेरी पर आधारित हो सकता है जो कई एपीआई को लागू करता है, लेकिन एक एपीआई के सामान्य उपयोग के विपरीत, रूपरेखा में निर्मित व्यवहार तक पहुंच की मध्यस्थता इसकी सामग्री को रूपरेखा में लगाए गए नए वर्गों के साथ विस्तारित करके की जाती है।
एपीआई का उपयोग शामिल प्रोग्रामिंग भाषा के प्रकार के आधार पर भिन्न हो सकता है।
लुआ (प्रोग्रामिंग लैंग्वेज) जैसी प्रक्रियात्मक प्रोग्रामिंग के लिए एक एपीआई में मुख्य रूप से कोड को निष्पादित करने, डेटा में हेरफेर करने या त्रुटियों को संभालने के लिए बुनियादी रूटीन शामिल हो सकते हैं, जबकि ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के लिए एपीआई। ऑब्जेक्ट-ओरिएंटेड भाषा, जैसे जावा, एक प्रदान करेगी। कक्षाओं और इसकी कक्षा विधियों का विनिर्देश।<ref>{{cite journal |last1=de Figueiredo |first1=Luiz Henrique |author-link2=Roberto Ierusalimschy |last2=Ierusalimschy |first2=Roberto |last3=Filho |first3=Waldemar Celes |title=अनुप्रयोगों के विस्तार के लिए एक भाषा का डिजाइन और कार्यान्वयन|url=https://www.researchgate.net/publication/2778436 |journal=TeCGraf Grupo de Tecnologia Em Computacao Grafica |year=1994 |pages=273–284 |citeseerx=10.1.1.47.5194 |s2cid=59833827 |access-date=29 July 2016}}</ref><ref name="Sintes16">{{cite web |last1=Sintes |first1=Tony |date=2001-07-13 |df=dmy |url=https://www.infoworld.com/article/2077392/just-what-is-the-java-api-anyway.html |title=वैसे भी जावा एपीआई क्या है?|website=[[JavaWorld]] |access-date=2020-07-18}}</ref> {{anchor|Hyrums}}हिरुम का नियम <ref>{{Cite book|editor-last=Winters|editor-first=Titus |title=Google पर सॉफ़्टवेयर इंजीनियरिंग: समय के साथ प्रोग्रामिंग से सीखे गए पाठ|date=2020|editor2=Tom Manshreck |editor3=Hyrum Wright|isbn=9781492082798 |location=Sebastopol, CA|oclc=1144086840}}</ref> बताता है कि एपीआई के उपयोगकर्ताओं की पर्याप्त संख्या के साथ, इससे कोई फर्क नहीं पड़ता कि आप अनुबंध में क्या वादा करते हैं: आपके सिस्टम के सभी अवलोकन योग्य व्यवहार किसी के द्वारा निर्भर होंगे। इस बीच, कई अध्ययनों से पता चलता है कि एपीआई का उपयोग करने वाले अधिकांश एप्लिकेशन एपीआई के एक छोटे से हिस्से का उपयोग करते हैं।<ref>{{Cite conference |last1=Mastrangelo|first1=Luis|last2=Ponzanelli|first2=Luca|last3=Mocci|first3=Andrea|last4=Lanza|first4=Michele|last5=Hauswirth|first5=Matthias|last6=Nystrom|first6=Nathaniel|date=2015-10-23|title=अपने जोखिम पर प्रयोग करें: जंगली में जावा असुरक्षित एपीआई|book-title=Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications|series=OOPSLA 2015|location=New York, NY, USA|publisher=Association for Computing Machinery|pages=695–710|doi=10.1145/2814270.2814313|isbn=978-1-4503-3689-5}}</ref> एपीआई का उपयोग वास्तव में उपयोगकर्ताओं की संख्या के साथ-साथ एपीआई की लोकप्रियता के आधार पर भिन्न होता है।<ref>{{Cite journal|last1=Harrand|first1=Nicolas|last2=Benelallam|first2=Amine|last3=Soto-Valero|first3=César|last4=Bettega|first4=François|last5=Barais|first5=Olivier|last6=Baudry|first6=Benoit|date=2022-02-01|title=एपीआई सौंदर्य ग्राहकों की नजर में है: 2.2 मिलियन मावेन निर्भरता क्लाइंट-एपीआई उपयोगों के स्पेक्ट्रम को प्रकट करती है|journal=Journal of Systems and Software|language=en|volume=184|pages=111134|doi=10.1016/j.jss.2021.111134 |doi-access=free |issn=0164-1212}}</ref>
भाषा बंधन भी एपीआई हैं। एक भाषा की विशेषताओं और क्षमताओं को दूसरी भाषा में लागू किए गए इंटरफ़ेस से मैप करके, एक भाषा बंधन किसी अन्य भाषा में विकसित होने पर एक भाषा में लिखी गई लाइब्रेरी या सेवा का उपयोग करने की अनुमति देता है।<ref name="Emery">{{Cite web |url=https://washingtonindependent.com/what-you-should-know-about-standards-apis-interfaces-and-bindings/ |title=आपको मानकों, एपीआई, इंटरफेस और बाइंडिंग के बारे में क्या पता होना चाहिए|last=Mclaughlin |first=Stefano |publisher=washingtonindependent.com|date= 20 December 1996}}</ref>
SWIG और F2PY जैसे उपकरण, एक फोरट्रान-टू-पायथन (प्रोग्रामिंग भाषा) इंटरफ़ेस जनरेटर, ऐसे इंटरफेस के निर्माण की सुविधा प्रदान करते हैं।<ref>{{Cite web |url=http://www.f2py.org/ |title=फ2प्य.ऑर्ग|publisher=फ2प्य.ऑर्ग|access-date=2011-12-18}}</ref>
एक एपीआई एक फ्रेमवर्क (कंप्यूटर साइंस) से भी संबंधित हो सकता है: एक फ्रेमवर्क कई एपीआई को लागू करने वाले कई पुस्तकालयों पर आधारित हो सकता है, लेकिन एक एपीआई के सामान्य उपयोग के विपरीत, ढांचे में निर्मित व्यवहार की पहुंच इसकी सामग्री का विस्तार करके मध्यस्थता की जाती है। नए वर्गों के साथ ढांचे में ही प्लग किया गया।


इसके अलावा, नियंत्रण का समग्र कार्यक्रम प्रवाह कॉल करने वाले के नियंत्रण से बाहर हो सकता है और नियंत्रण के व्युत्क्रम या इसी तरह के तंत्र द्वारा ढांचे के हाथों में हो सकता है।<ref>{{cite web
इसके अलावा, नियंत्रण का समग्र प्रोग्राम प्रवाह कॉल करने वाले के नियंत्रण से बाहर और नियंत्रण के व्युत्क्रम या इसी तरह के तंत्र द्वारा रूपरेखा के हाथों में हो सकता है।<ref>{{cite web
|first = Martin
|first = Martin
|last = Fowler
|last = Fowler
Line 63: Line 67:
</ref>
</ref>
===ऑपरेटिंग सिस्टम===
===ऑपरेटिंग सिस्टम===
एक एपीआई एक एप्लिकेशन और ऑपरेटिंग सिस्टम के बीच इंटरफेस को निर्दिष्ट कर सकता है।<ref name="Oreilly91">{{Cite book |last=Lewine |first=Donald A. |url=http://shop.oreilly.com/product/9780937175736.do |title=पॉज़िक्स प्रोग्रामर गाइड|date=1991 |publisher=O'Reilly & Associates, Inc. |page=1 |isbn=9780937175736 |access-date=2 August 2016}}</ref> POSIX, उदाहरण के लिए, सामान्य API विनिर्देशों का एक सेट प्रदान करता है जिसका उद्देश्य POSIX अनुरूप ऑपरेटिंग सिस्टम के लिए लिखे गए एप्लिकेशन को अन्य POSIX अनुरूप ऑपरेटिंग सिस्टम के लिए कंपाइलर बनाना है।
एक एपीआई एप्लिकेशन और ऑपरेटिंग सिस्टम के बीच इंटरफेस को निर्दिष्ट कर सकता है।<ref name="Oreilly91">{{Cite book |last=Lewine |first=Donald A. |url=http://shop.oreilly.com/product/9780937175736.do |title=पॉज़िक्स प्रोग्रामर गाइड|date=1991 |publisher=O'Reilly & Associates, Inc. |page=1 |isbn=9780937175736 |access-date=2 August 2016}}</ref> पीओएसआईएक्स (POSIX), उदाहरण के लिए, सामान्य एपीआई विनिर्देशों का एक सेट प्रदान करता है जिसका उद्देश्य पीओएसआईएक्स (POSIX) अनुरूप ऑपरेटिंग सिस्टम के लिए लिखे गए एप्लिकेशन को अन्य पीओएसआईएक्स (POSIX) अनुरूप ऑपरेटिंग सिस्टम के लिए संकलित करने में सक्षम बनाना है।  
 
लिनक्स और बर्कले सॉफ्टवेयर वितरण ऑपरेटिंग सिस्टम के उदाहरण हैं जो पीओएसआईएक्स (POSIX) एपीआई को लागू करते हैं।<ref name="WestDedrick16">{{Cite journal |last1=West |first1=Joel |last2=Dedrick |first2=Jason |date=2001 |title=ओपन सोर्स मानकीकरण: नेटवर्क युग में लिनक्स का उदय|url=http://www.joelwest.org/Papers/WestDedrick2001b.pdf |journal=Knowledge, Technology & Policy |volume=14 |issue=2 |pages=88–112 |doi=10.1007/PL00022278 |s2cid=46082812 |access-date=2 August 2016}}</ref>


लिनक्स और बर्कले सॉफ्टवेयर डिस्ट्रीब्यूशन ऑपरेटिंग सिस्टम के उदाहरण हैं जो POSIX API को लागू करते हैं।<ref name="WestDedrick16">{{Cite journal |last1=West |first1=Joel |last2=Dedrick |first2=Jason |date=2001 |title=ओपन सोर्स मानकीकरण: नेटवर्क युग में लिनक्स का उदय|url=http://www.joelwest.org/Papers/WestDedrick2001b.pdf |journal=Knowledge, Technology & Policy |volume=14 |issue=2 |pages=88–112 |doi=10.1007/PL00022278 |s2cid=46082812 |access-date=2 August 2016}}</ref>
माइक्रोसॉफ्ट ने विशेष रूप से अपने विंडोज एपीआई (Win32) लाइब्रेरी के भीतर एक पिछड़े-संगत एपीआई के लिए एक मजबूत प्रतिबद्धता दिखाई है, इसलिए पुराने एप्लिकेशन "संगतता मोड" नामक निष्पादन योग्य-विशिष्ट सेटिंग का उपयोग करके विंडोज के नए संस्करणों पर चल सकते हैं।<ref>
माइक्रोसॉफ्ट ने पिछड़े-संगत एपीआई के लिए विशेष रूप से अपने विंडोज एपीआई (विन 32) लाइब्रेरी के लिए एक मजबूत प्रतिबद्धता दिखायी है, इसलिए पुराने एप्लिकेशन संगतता मोड नामक निष्पादन योग्य-विशिष्ट सेटिंग का उपयोग करके विंडोज़ के नए संस्करणों पर चल सकते हैं।<ref>
{{cite web
{{cite web
  |author=Microsoft
  |author=Microsoft
Line 78: Line 83:
  |archive-date=2009-09-26
  |archive-date=2009-09-26
}}</ref>
}}</ref>
एक एपीआई एक एप्लिकेशन बाइनरी इंटरफ़ेस (एबीआई) से अलग है जिसमें एपीआई स्रोत कोड आधारित है जबकि एबीआई बाइनरी फ़ाइल आधारित है। उदाहरण के लिए, POSIX API प्रदान करता है जबकि Linux मानक आधार ABI प्रदान करता है।<ref>{{cite web|
 
एक एपीआई एक एप्लिकेशन बाइनरी इंटरफ़ेस (एबीआई) से अलग है जिसमें एपीआई स्रोत कोड आधारित है जबकि एबीआई बाइनरी आधारित है। उदाहरण के लिए, पीओएसआईएक्स (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|

Revision as of 13:06, 1 January 2023

नासा द्वारा लिखित वेब एपीआई प्रलेखन का स्क्रीनशॉट।

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

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

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

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