एपीआई: Difference between revisions
From Vigyanwiki
No edit summary |
No edit summary |
||
| (9 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> | ||
[[File:Univac 1108 Census Bureau.jpg|thumb|300px| | [[File:Univac 1108 Census Bureau.jpg|thumb|300px|हालांकि एपीआई शब्द गढ़ने वाले लोग यूनीवैक 1108 पर सॉफ्टवेयर कार्यान्वयन कर रहे थे, उनके एपीआई का लक्ष्य हार्डवेयर स्वतंत्र प्रोग्राम को संभव बनाना था।<ref name="CottonGreatorex1968" />]] | ||
=== 1960 और 1970 के दशक === | === 1960 और 1970 के दशक === | ||
| 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 96: | Line 98: | ||
access-date=2009-06-04}}</ref> | access-date=2009-06-04}}</ref> | ||
=== रिमोट एपीआई === | === रिमोट एपीआई === | ||
रिमोट एपीआई डेवलपर्स को प्रोटोकॉल के माध्यम से रिमोट संसाधनों में हेरफेर करने की अनुमति देते हैं, संचार के लिए विशिष्ट मानक जो भाषा या प्लेटफॉर्म की परवाह किए बिना विभिन्न तकनीकों को एक साथ काम करने की अनुमति देते हैं। उदाहरण के लिए, जावा डाटाबेस सम्बन्ध एपीआई डेवलपर्स को कार्यों के एक ही सेट के साथ कई अलग-अलग प्रकार के डेटाबेस को जांच करने की अनुमति देता है, जबकि जावा रिमोट विधि आह्वान एपीआई जावा रिमोट विधि प्रोटोकॉल का उपयोग करता है जो रिमोट रूप से संचालित होने वाले कार्यों के आह्वान की अनुमति देता है। लेकिन डेवलपर को स्थानीय दिखाई देते हैं।<ref name="Bierhoff9">{{Cite journal |last=Bierhoff |first=Kevin |date=23 April 2009 |title=ऑब्जेक्ट-ओरिएंटेड सॉफ़्टवेयर में एपीआई प्रोटोकॉल अनुपालन|url=https://www.cs.cmu.edu/~kbierhof/thesis/bierhoff-thesis.pdf |journal=CMU Institute for Software Research |access-date=29 July 2016}}</ref><ref name="Wilson16">{{cite web |last1=Wilson |first1=M. Jeff |date=2000-11-10 |df=dmy |url=https://www.infoworld.com/article/2076234/get-smart-with-proxies-and-rmi.html |title=प्रॉक्सी और आरएमआई के साथ स्मार्ट बनें|work=[[JavaWorld]] |access-date=2020-07-18}}</ref> | |||
उदाहरण के लिए, जावा डाटाबेस | |||
इसलिए, | इसलिए, रिमोट एपीआई ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में ऑब्जेक्ट को निराकार बनाए रखने में उपयोगी होते हैं प्रतिनिधि संबंधी ऑब्जेक्ट पर स्थानीय रूप से निष्पादित एक विधि कॉल, रिमोटिंग प्रोटोकॉल का उपयोग करके रिमोट ऑब्जेक्ट पर संबंधित विधि को आमंत्रित करता है, और परिणाम को स्थानीय रूप से वापसी मान के रूप में उपयोग करने के लिए प्राप्त करता है। | ||
प्रतिनिधि संबंधी ऑब्जेक्ट के एक संशोधन के परिणामस्वरूप रिमोट ऑब्जेक्ट का एक संगत संशोधन भी होगा।<ref name="AdvancedCorba">{{cite book | |||
|last1 = Henning | |last1 = Henning | ||
|first1 = Michi | |first1 = Michi | ||
| Line 114: | Line 116: | ||
}}</ref> | }}</ref> | ||
=== वेब एपीआई === | === वेब एपीआई === | ||
{{Main| | {{Main|वेब एपीआई}} | ||
वेब एपीआई हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल ( | |||
वेब एपीआई हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल (एचटीटीपी) का उपयोग कर क्लाइंट डिवाइस (मोबाइल फोन, लैपटॉप इत्यादि) से वेब सर्वर तक पहुंचने वाली सेवा है। क्लाइंट डिवाइस एचटीटीपी (HTTP) अनुरोध के रूप में भेजते हैं, और प्रायः जावास्क्रिप्ट ऑब्जेक्ट नोटेशन (JSON) या एक्स्टेंसिबल मार्कअप लैंग्वेज (XML) प्रारूप में प्रतिक्रिया संदेश के साथ मिलती हैं। डेवलपर्स प्रायः वेब एपीआई का उपयोग उस सर्वर से डेटा के एक विशिष्ट सेट के लिए सर्वर जांच करने के लिए करते हैं। | |||
उदाहरण एक शिपिंग कंपनी एपीआई हो सकती है जिसे शिपिंग सेवाओं को ऑर्डर करने की सुविधा के लिए ईकामर्स-केंद्रित वेबसाइट में जोड़ा जा सकता है और साइट डेवलपर को वेब डेटाबेस में शिपर की दर तालिका में प्रवेश किए बिना स्वचालित रूप से वर्तमान शिपिंग दरों को सम्मिलित किया जा सकता है। जबकि "वेब एपीआई" ऐतिहासिक रूप से वेब सेवा का वस्तुतः पर्याय रहा है, हाल की प्रवृत्ति (तथाकथित वेब 2.0) सिंपल ऑब्जेक्ट एक्सेस प्रोटोकॉल (SOAP) आधारित वेब सेवाओं और सेवा-उन्मुख आर्किटेक्चर (SOA) से अधिक प्रत्यक्ष प्रतिनिधित्वात्मक स्थिति स्थानांतरण (REST), शैली वेब संसाधन और संसाधन-उन्मुख आर्किटेक्चर (ROA) की ओर बढ़ रही है।<ref>{{cite web | |||
|first = Djamal | |first = Djamal | ||
|last = Benslimane | |last = Benslimane | ||
| Line 132: | Line 135: | ||
|archive-date = 2011-09-28 | |archive-date = 2011-09-28 | ||
|url-status = dead | |url-status = dead | ||
}}</ref> इस प्रवृत्ति का एक हिस्सा सिमेंटिक वेब | }}</ref> इस प्रवृत्ति का एक हिस्सा सिमेंटिक वेब गतिविधि से संसाधन विवरण रूपरेखा (RDF) से संबंधित है, जो वेब-आधारित ऑन्टोलॉजी इंजीनियरिंग तकनीकों को बढ़ावा देने के लिए एक अवधारणा है। वेब एपीआई मैशअप के रूप में ज्ञात नए अनुप्रयोगों में कई एपीआई के संयोजन की अनुमति देता है।<ref> | ||
{{citation | {{citation | ||
|first = James | |first = James | ||
| Line 141: | Line 144: | ||
|date = 2008-04-23 | |date = 2008-04-23 | ||
}}</ref> | }}</ref> | ||
सोशल मीडिया स्पेस में, वेब एपीआई ने वेब समुदायों को समुदायों और | |||
</ref> उदाहरण के लिए, ट्विटर का रेस्ट एपीआई डेवलपर्स को कोर ट्विटर डेटा तक पहुंचने की अनुमति देता है और सर्च एपीआई डेवलपर्स को ट्विटर सर्च और ट्रेंड डेटा के साथ | सोशल मीडिया स्पेस में, वेब एपीआई ने वेब समुदायों को समुदायों और एप्लिकेशन के बीच सामग्री और डेटा साझा करने की सुविधा प्रदान करने की अनुमति दी है। इस प्रकार, एक स्थान पर गतिशील रूप से बनाई गई सामग्री को वेब पर कई स्थानों पर पोस्ट और अपडेट किया जा सकता है।<ref name="Parr16">{{cite web|last1=Parr|first1=Ben|title=सोशल मीडिया एपीआई का विकास|url=http://mashable.com/2009/05/21/social-media-api/|website=Mashable|date=21 May 2009|access-date=26 July 2016}} | ||
</ref> उदाहरण के लिए, ट्विटर का रेस्ट एपीआई डेवलपर्स को कोर ट्विटर डेटा तक पहुंचने की अनुमति देता है और सर्च एपीआई डेवलपर्स को ट्विटर सर्च और ट्रेंड डेटा के साथ बातचीत करने के तरीके प्रदान करता है।<ref>{{Cite web|title=रुझान/स्थान प्राप्त करें|url=https://developer.twitter.com/en/docs/trends/trends-for-location/api-reference/get-trends-place|website=developer.twitter.com|language=en|access-date=2020-04-30}}</ref> | |||
== डिजाइन == | == डिजाइन == | ||
एपीआई के डिजाइन का इसके उपयोग पर महत्वपूर्ण प्रभाव पड़ता है।<ref name="Clarke4" />सबसे पहले, प्रोग्रामिंग इंटरफेस का डिजाइन सॉफ्टवेयर आर्किटेक्चर के एक महत्वपूर्ण हिस्से का प्रतिनिधित्व करता है, सॉफ्टवेयर के एक जटिल टुकड़े का | एपीआई के डिजाइन का इसके उपयोग पर महत्वपूर्ण प्रभाव पड़ता है।<ref name="Clarke4" /> सबसे पहले, प्रोग्रामिंग इंटरफेस का डिजाइन सॉफ्टवेयर आर्किटेक्चर के एक महत्वपूर्ण हिस्से का प्रतिनिधित्व करता है, जो सॉफ्टवेयर के एक जटिल टुकड़े का संगठन है।<ref name="GarlanShaw94">{{Cite journal |last1=Garlan |first1=David |last2=Shaw |first2=Mary |date=January 1994 |title=सॉफ्टवेयर आर्किटेक्चर का परिचय|url=https://www.cs.cmu.edu/afs/cs/project/able/ftp/intro_softarch/intro_softarch.pdf |journal=Advances in Software Engineering and Knowledge Engineering |volume=1 |access-date=8 August 2016}}</ref> सूचना छिपाने का सिद्धांत मॉड्यूल के कार्यान्वयन विवरण को छिपाकर मॉड्यूलर प्रोग्रामिंग को सक्षम करने के रूप में प्रोग्रामिंग इंटरफेस की भूमिका का वर्णन करता है ताकि मॉड्यूल के उपयोगकर्ताओं को मॉड्यूल के अंदर की जटिलताओं को समझने की आवश्यकता न हो।<ref name="Parnas72">{{Cite journal |last=Parnas |first=D.L. |date=1972 |title=मॉड्यूल में डीकंपोज़िंग सिस्टम में उपयोग किए जाने वाले मानदंड पर|journal=Communications of the ACM |volume=15 |issue=12 |pages=1053–1058 |doi=10.1145/361598.361623|s2cid=53856438 }}</ref> पिछले अंतर्निहित सिद्धांत के अलावा, एपीआई की उपयोगिता को मापने के लिए अन्य मेट्रिक्स में कार्यात्मक दक्षता, समग्र शुद्धता और नौसिखियों के लिए सीखने की क्षमता जैसे गुण सम्मिलित हो सकते हैं।<ref>{{cite journal | url=https://dl.acm.org/doi/pdf/10.1145/2896587 | doi=10.1145/2896587 | title=एपीआई उपयोगिता में सुधार| year=2016 | last1=Myers | first1=Brad A. | last2=Stylos | first2=Jeffrey | journal=Communications of the ACM | volume=59 | issue=6 | pages=62–69 | s2cid=543853 }}</ref> एपीआई डिजाइन करने का एक सीधा और प्रायः अपनाया जाने वाला तरीका नीलसन के अनुमानी मूल्यांकन दिशानिर्देशों का पालन करना है। फ़ैक्टरी विधि पैटर्न भी उनके पुन: प्रयोज्य प्रकृति के कारण एपीआई को डिजाइन करने में विशिष्ट है।<ref>Brian Ellis, Jeffrey Stylos, and Brad Myers. 2007. The Factory Pattern in API Design: A Usability Evaluation. In ''Proceedings of the 29th international conference on Software Engineering'' (''ICSE '07''). IEEE Computer Society, USA, 302–312. DOI:https://doi.org/10.1109/ICSE.2007.85 http://www.cs.cmu.edu/~NatProg/papers/Ellis2007FactoryUsability.pdf</ref> इस प्रकार, एक एपीआई का डिज़ाइन केवल उन उपकरणों को प्रदान करने का प्रयास करता है जिनकी उपयोगकर्ता अपेक्षा करता है।<ref name="Clarke4" /> | ||
पिछले अंतर्निहित सिद्धांत के अलावा, एपीआई की उपयोगिता को मापने के लिए अन्य मेट्रिक्स में कार्यात्मक दक्षता, समग्र शुद्धता और नौसिखियों के लिए सीखने की क्षमता जैसे गुण | |||
=== तुल्यकालिक बनाम अतुल्यकालिक === | === तुल्यकालिक बनाम अतुल्यकालिक === | ||
एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस तुल्यकालिक या अतुल्यकालिक हो सकता है। तुल्यकालिक एपीआई कॉल एक डिज़ाइन पैटर्न है जहां कॉल साइट को कॉल किए गए कोड के समाप्त होने की प्रतीक्षा करते समय अवरुद्ध कर दिया जाता है।<ref>[https://developer.cisco.com/docs/packaged-contact-center/#!synchronous-vs-asynchronous-writes Synchronous vs. Asynchronous Writes - Packaged Contact Center Enterprise - Document - Cisco DevNet]</ref> अतुल्यकालिक एपीआई कॉल के साथ, हालांकि, कॉल साइट को कॉल किए गए कोड के समाप्त होने की प्रतीक्षा करते समय अवरुद्ध नहीं किया जाता है, और उत्तर आने पर कॉलिंग थ्रेड को अधिसूचित किया जाता है। | |||
== सुरक्षा == | == सुरक्षा == | ||
पब्लिक फेसिंग एपीआई विकसित करते समय एपीआई सुरक्षा बहुत महत्वपूर्ण है। सामान्य खतरों में SQL इंजेक्शन, डेनियल-ऑफ़-सर्विस अटैक (DoS), टूटा | |||