एपीआई: Difference between revisions
From Vigyanwiki
(Created page with "{{short description|Software interface between computers and/or programs}} {{other uses}} {{redirect|Api.php|the Wikipedia API|Special:ApiHelp|selfref=true}} File:Screenshot...") |
No edit summary |
||
| Line 2: | Line 2: | ||
{{other uses}} | {{other uses}} | ||
{{redirect|Api.php|the Wikipedia API|Special:ApiHelp|selfref=true}} | {{redirect|Api.php|the Wikipedia API|Special:ApiHelp|selfref=true}} | ||
[[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"/> जो इंटरनेट से जुड़े कंप्यूटरों के बीच संचार की अनुमति देता है। प्रोग्रामिंग भाषाओं, सॉफ्टवेयर लाइब्रेरी, कंप्यूटर ऑपरेटिंग सिस्टम और कंप्यूटर हार्डवेयर के लिए एपीआई भी हैं। एपीआई की उत्पत्ति 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> | ||
== शब्द का इतिहास == | == शब्द का इतिहास == | ||
[[File:Database_management_system_diagram_from_1978_workshop.png|thumb|left|1978 का एक रेखाचित्र, केवल एप्लिकेशन प्रोग्राम से परे, एक सामान्य प्रोग्रामिंग इंटरफ़ेस बनने के लिए एपीआई के विचार के विस्तार का प्रस्ताव करता है।<ref name="NBS1981" />]]एपीआई शब्द | [[File:Database_management_system_diagram_from_1978_workshop.png|thumb|left|1978 का एक रेखाचित्र, केवल एप्लिकेशन प्रोग्राम से परे, एक सामान्य प्रोग्रामिंग इंटरफ़ेस बनने के लिए एपीआई के विचार के विस्तार का प्रस्ताव करता है।<ref name="NBS1981" />]]एपीआई शब्द प्रारम्भ में केवल एंड-यूज़र-फेसिंग प्रोग्राम के लिए एक इंटरफ़ेस का वर्णन करता है, जिसे एप्लिकेशन प्रोग्राम के रूप में जाना जाता है। यह उत्पत्ति अभी भी "एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस" के नाम से परिलक्षित होती है। आज, यह शब्द व्यापक है, जिसमें उपयोगिता (यूटिलिटी) सॉफ्टवेयर और यहां तक कि हार्डवेयर इंटरफेस भी सम्मिलित हैं।<ref name="Bloch2018" /> | ||
=== 1940 और 1950 के दशक === | === 1940 और 1950 के दशक === | ||
API का विचार स्वयं शब्द से बहुत पुराना है। ब्रिटिश कंप्यूटर वैज्ञानिक मौरिस विल्क्स और डेविड व्हीलर ने 1940 के दशक में एक प्रारंभिक कंप्यूटर ईडीएसएसी (EDSAC) के लिए एक मॉड्यूलर सॉफ्टवेयर लाइब्रेरी पर काम किया। इस लाइब्रेरी में सबरूटीन्स को फाइलिंग कैबिनेट में व्यवस्थित पंच पेपर टेप पर संग्रहित किया गया था। इस कैबिनेट में यह भी सम्मिलित है कि विल्क्स और व्हीलर ने प्रत्येक सबरूटीन के बारे में नोट्स की एक "लाइब्रेरी कैटलॉग" को क्या कहा और इसे एक प्रोग्राम में कैसे सम्मिलित किया जाए। आज, इस तरह के कैटलॉग को एपीआई (या एपीआई विनिर्देश या एपीआई दस्तावेज) कहा जाएगा क्योंकि यह एक प्रोग्रामर को निर्देश देता है कि प्रोग्रामर को प्रत्येक सबरूटीन का उपयोग (या "कॉल") कैसे करें।<ref name="Bloch2018" /> | |||
विल्क्स एंड व्हीलर की 1951 की | विल्क्स एंड व्हीलर की 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|Although the people who coined the term API were implementing software on a UNIVAC 1100/2200 श्रृंखला #1108, उनके एपीआई का लक्ष्य हार्डवेयर स्वतंत्र कार्यक्रमों को संभव बनाना था।<ref name="CottonGreatorex1968" />]] | [[File:Univac 1108 Census Bureau.jpg|thumb|300px|Although the people who coined the term API were implementing software on a UNIVAC 1100/2200 श्रृंखला #1108, उनके एपीआई का लक्ष्य हार्डवेयर स्वतंत्र कार्यक्रमों को संभव बनाना था।<ref name="CottonGreatorex1968" />]] | ||
| Line 32: | Line 25: | ||
टर्म एप्लिकेशन प्रोग्राम इंटरफ़ेस (बिना -इंग प्रत्यय के) पहली बार 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> एक एपीआई 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> | यह शब्द डेटाबेस के क्षेत्र में क्रिस्टोफर जे. डेट|सी द्वारा पेश किया गया था। जे दिनांक<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> | ||
इस अवलोकन ने एपीआई का नेतृत्व किया जो सभी प्रकार की प्रोग्रामिंग का समर्थन करता था, न कि केवल एप्लिकेशन प्रोग्रामिंग का। | इस अवलोकन ने एपीआई का नेतृत्व किया जो सभी प्रकार की प्रोग्रामिंग का समर्थन करता था, न कि केवल एप्लिकेशन प्रोग्रामिंग का। | ||
| Line 38: | Line 32: | ||
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, कंपोनेंट ऑब्जेक्ट मॉडल और डिस्ट्रिब्यूटेड कंपोनेंट ऑब्जेक्ट मॉडल जैसे मानकों ने 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> | ||
=== 2000 के दशक === | === 2000 के दशक === | ||
| Line 70: | Line 62: | ||
}} | }} | ||
</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, उदाहरण के लिए, सामान्य API विनिर्देशों का एक सेट प्रदान करता है जिसका उद्देश्य POSIX अनुरूप ऑपरेटिंग सिस्टम के लिए लिखे गए एप्लिकेशन को अन्य POSIX अनुरूप ऑपरेटिंग सिस्टम के लिए कंपाइलर बनाना है। | ||
| Line 99: | Line 89: | ||
publisher=[[USENIX]]|date=April 2005| | publisher=[[USENIX]]|date=April 2005| | ||
access-date=2009-06-04}}</ref> | access-date=2009-06-04}}</ref> | ||
=== रिमोट एपीआई === | === रिमोट एपीआई === | ||
दूरस्थ एपीआई डेवलपर्स को संचार प्रोटोकॉल के माध्यम से दूरस्थ संसाधनों में हेरफेर करने की अनुमति देते हैं, संचार के लिए विशिष्ट मानक जो विभिन्न तकनीकों को भाषा या प्लेटफॉर्म की परवाह किए बिना एक साथ काम करने की अनुमति देते हैं। | दूरस्थ एपीआई डेवलपर्स को संचार प्रोटोकॉल के माध्यम से दूरस्थ संसाधनों में हेरफेर करने की अनुमति देते हैं, संचार के लिए विशिष्ट मानक जो विभिन्न तकनीकों को भाषा या प्लेटफॉर्म की परवाह किए बिना एक साथ काम करने की अनुमति देते हैं। | ||
| Line 119: | Line 107: | ||
|access-date = 16 June 2015 | |access-date = 16 June 2015 | ||
}}</ref> | }}</ref> | ||
=== वेब एपीआई === | === वेब एपीआई === | ||
{{Main|Web API}} | {{Main|Web API}} | ||
| Line 151: | Line 137: | ||
सोशल मीडिया स्पेस में, वेब एपीआई ने वेब समुदायों को समुदायों और अनुप्रयोगों के बीच सामग्री और डेटा साझा करने की सुविधा प्रदान करने की अनुमति दी है। इस तरह, एक स्थान पर गतिशील रूप से बनाई गई सामग्री को वेब पर कई स्थानों पर पोस्ट और अपडेट किया जा सकता है।<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 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> उदाहरण के लिए, ट्विटर का रेस्ट एपीआई डेवलपर्स को कोर ट्विटर डेटा तक पहुंचने की अनुमति देता है और सर्च एपीआई डेवलपर्स को ट्विटर सर्च और ट्रेंड डेटा के साथ इंटरैक्ट करने के तरीके प्रदान करता है।<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="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 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>{{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> एसिंक्रोनस एपीआई कॉल के साथ, हालांकि, कॉल साइट को कॉल किए गए कोड के समाप्त होने की प्रतीक्षा करते समय ब्लॉक नहीं किया जाता है, और इसके बजाय उत्तर आने पर कॉलिंग थ्रेड को सूचित किया जाता है। | एक एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस अतुल्यकालिक विधि मंगलाचरण हो सकता है। एक सिंक्रोनस एपीआई कॉल एक डिज़ाइन पैटर्न है जहां कॉल साइट को कॉल किए गए कोड के समाप्त होने की प्रतीक्षा करते समय अवरुद्ध कर दिया जाता है।<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> एसिंक्रोनस एपीआई कॉल के साथ, हालांकि, कॉल साइट को कॉल किए गए कोड के समाप्त होने की प्रतीक्षा करते समय ब्लॉक नहीं किया जाता है, और इसके बजाय उत्तर आने पर कॉलिंग थ्रेड को सूचित किया जाता है। | ||
| Line 164: | Line 145: | ||
== सुरक्षा == | == सुरक्षा == | ||
पब्लिक फेसिंग एपीआई विकसित करते समय एपीआई सुरक्षा बहुत महत्वपूर्ण है। सामान्य खतरों में SQL इंजेक्शन, डेनियल-ऑफ़-सर्विस अटैक (DoS), टूटा हुआ प्रमाणीकरण और संवेदनशील डेटा को उजागर करना शामिल है।<ref>{{cite web |url=https://owasp.org/www-project-api-security/ |title=ग्लोबल क्लाउड माइक्रोसर्विसेज मार्केट (2021 से 2026)|last=Silva |first=Paulo |date=2019 |access-date=2022-03-29}}</ref> उचित सुरक्षा प्रथाओं को सुनिश्चित किए बिना खराब अभिनेता उस जानकारी तक पहुंच प्राप्त कर सकते हैं जो उनके पास नहीं होनी चाहिए या आपके सर्वर में परिवर्तन करने के लिए विशेषाधिकार भी प्राप्त कर सकते हैं। कुछ सामान्य सुरक्षा प्रथाओं में HTTPS का उपयोग करके उचित कनेक्शन सुरक्षा, डेटा इंजेक्शन हमलों को कम करने के लिए सामग्री सुरक्षा, और आपकी सेवा का उपयोग करने के लिए API कुंजी की आवश्यकता शामिल है।<ref>{{cite web |url=https://developer.mozilla.org/en-US/docs/Web/Security |title=वेब सुरक्षा|date=2022-02-18 |access-date=2022-03-29}}</ref> कई सार्वजनिक एपीआई सेवाओं के लिए आपको एक निर्दिष्ट एपीआई कुंजी का उपयोग करने की आवश्यकता होती है, और आपके अनुरोध के साथ कुंजी भेजे बिना डेटा की सेवा करने से इंकार कर देगी।<ref>{{Cite web |date=2022-03-01 |title=एपीआई कुंजी - एपीआई कुंजी क्या है? {{!}} एपीआईलेयर ब्लॉग|url=https://blog.apilayer.com/api-keys-what-is-an-api-key/ |access-date=2022-07-15 |language=en-US}}</ref> | पब्लिक फेसिंग एपीआई विकसित करते समय एपीआई सुरक्षा बहुत महत्वपूर्ण है। सामान्य खतरों में SQL इंजेक्शन, डेनियल-ऑफ़-सर्विस अटैक (DoS), टूटा हुआ प्रमाणीकरण और संवेदनशील डेटा को उजागर करना शामिल है।<ref>{{cite web |url=https://owasp.org/www-project-api-security/ |title=ग्लोबल क्लाउड माइक्रोसर्विसेज मार्केट (2021 से 2026)|last=Silva |first=Paulo |date=2019 |access-date=2022-03-29}}</ref> उचित सुरक्षा प्रथाओं को सुनिश्चित किए बिना खराब अभिनेता उस जानकारी तक पहुंच प्राप्त कर सकते हैं जो उनके पास नहीं होनी चाहिए या आपके सर्वर में परिवर्तन करने के लिए विशेषाधिकार भी प्राप्त कर सकते हैं। कुछ सामान्य सुरक्षा प्रथाओं में HTTPS का उपयोग करके उचित कनेक्शन सुरक्षा, डेटा इंजेक्शन हमलों को कम करने के लिए सामग्री सुरक्षा, और आपकी सेवा का उपयोग करने के लिए API कुंजी की आवश्यकता शामिल है।<ref>{{cite web |url=https://developer.mozilla.org/en-US/docs/Web/Security |title=वेब सुरक्षा|date=2022-02-18 |access-date=2022-03-29}}</ref> कई सार्वजनिक एपीआई सेवाओं के लिए आपको एक निर्दिष्ट एपीआई कुंजी का उपयोग करने की आवश्यकता होती है, और आपके अनुरोध के साथ कुंजी भेजे बिना डेटा की सेवा करने से इंकार कर देगी।<ref>{{Cite web |date=2022-03-01 |title=एपीआई कुंजी - एपीआई कुंजी क्या है? {{!}} एपीआईलेयर ब्लॉग|url=https://blog.apilayer.com/api-keys-what-is-an-api-key/ |access-date=2022-07-15 |language=en-US}}</ref> | ||
== रिलीज नीतियां == | == रिलीज नीतियां == | ||
एपीआई अधिक सामान्य तरीकों में से एक है जिसे प्रौद्योगिकी कंपनियां एकीकृत करती हैं। एपीआई प्रदान करने और उपयोग करने वालों को एक व्यावसायिक पारिस्थितिकी तंत्र के सदस्य के रूप में माना जाता है।<ref>{{cite web| | एपीआई अधिक सामान्य तरीकों में से एक है जिसे प्रौद्योगिकी कंपनियां एकीकृत करती हैं। एपीआई प्रदान करने और उपयोग करने वालों को एक व्यावसायिक पारिस्थितिकी तंत्र के सदस्य के रूप में माना जाता है।<ref>{{cite web| | ||
| Line 179: | Line 158: | ||
*<u>भागीदार</u>: केवल विशिष्ट व्यावसायिक भागीदार ही एपीआई का उपयोग कर सकते हैं। उदाहरण के लिए, किराए पर लेने वाली कंपनियां जैसे Uber और Lyft, स्वीकृत तृतीय-पक्ष डेवलपर्स को उनके ऐप के भीतर से सीधे सवारी का आदेश देने की अनुमति देती हैं। यह कंपनियों को गुणवत्ता नियंत्रण का अभ्यास करने की अनुमति देता है कि किन ऐप्स की एपीआई तक पहुंच है और उन्हें एक अतिरिक्त राजस्व स्ट्रीम प्रदान करता है।<ref>{{Cite web |url=https://www.adexchanger.com/mobile/car-service-apis-everywhere-whats-partner-apps/ |title=कार सर्विस एपीआई हर जगह हैं, लेकिन पार्टनर ऐप्स के लिए इसमें क्या है?|last=Weissbrot |first=Alison | website=AdExchanger |date=7 July 2016}}</ref> | *<u>भागीदार</u>: केवल विशिष्ट व्यावसायिक भागीदार ही एपीआई का उपयोग कर सकते हैं। उदाहरण के लिए, किराए पर लेने वाली कंपनियां जैसे Uber और Lyft, स्वीकृत तृतीय-पक्ष डेवलपर्स को उनके ऐप के भीतर से सीधे सवारी का आदेश देने की अनुमति देती हैं। यह कंपनियों को गुणवत्ता नियंत्रण का अभ्यास करने की अनुमति देता है कि किन ऐप्स की एपीआई तक पहुंच है और उन्हें एक अतिरिक्त राजस्व स्ट्रीम प्रदान करता है।<ref>{{Cite web |url=https://www.adexchanger.com/mobile/car-service-apis-everywhere-whats-partner-apps/ |title=कार सर्विस एपीआई हर जगह हैं, लेकिन पार्टनर ऐप्स के लिए इसमें क्या है?|last=Weissbrot |first=Alison | website=AdExchanger |date=7 July 2016}}</ref> | ||
*<u>सार्वजनिक</u>: एपीआई जनता के उपयोग के लिए उपलब्ध है। उदाहरण के लिए, Microsoft Windows API को सार्वजनिक करता है, और Apple Inc. अपना API Cocoa (API) जारी करता है ताकि सॉफ्टवेयर को उनके कंप्यूटिंग प्लेटफॉर्म के लिए लिखा जा सके। सभी सार्वजनिक एपीआई आम तौर पर हर किसी के द्वारा सुलभ नहीं होते हैं। उदाहरण के लिए, क्लाउडफ्लेयर या वोक्सिलिटी जैसे इंटरनेट सेवा प्रदाता, ग्राहकों और पुनर्विक्रेताओं को उनकी बुनियादी सुविधाओं की जानकारी, DDoS आँकड़े, नेटवर्क प्रदर्शन, या डैशबोर्ड नियंत्रणों तक पहुँचने की अनुमति देने के लिए RESTful API का उपयोग करते हैं।<ref name="Cloudflare">{{Cite web |url=https://api.cloudflare.com/ |title=क्लाउडफ्लेयर एपीआई v4 प्रलेखन|date=25 February 2020 |website=cloudflare |access-date=27 February 2020}}</ref> ऐसे एपीआई तक पहुंच या तो एपीआई टोकन या ग्राहक स्थिति सत्यापन द्वारा प्रदान की जाती है।<ref name="SmashMagazine">{{Cite web |url=https://www.smashingmagazine.com/2018/01/understanding-using-rest-api/ |title=कार सर्विस एपीआई हर जगह हैं, लेकिन पार्टनर ऐप्स के लिए इसमें क्या है|last=Liew |first=Zell |date=17 January 2018 |website=Smashing Magazine |access-date=27 February 2020}}</ref> | *<u>सार्वजनिक</u>: एपीआई जनता के उपयोग के लिए उपलब्ध है। उदाहरण के लिए, Microsoft Windows API को सार्वजनिक करता है, और Apple Inc. अपना API Cocoa (API) जारी करता है ताकि सॉफ्टवेयर को उनके कंप्यूटिंग प्लेटफॉर्म के लिए लिखा जा सके। सभी सार्वजनिक एपीआई आम तौर पर हर किसी के द्वारा सुलभ नहीं होते हैं। उदाहरण के लिए, क्लाउडफ्लेयर या वोक्सिलिटी जैसे इंटरनेट से | ||