एपीआई और फ्रंटएंड-बैकएंड के बीच अंतर


23

मैं एक "मानक" व्यावसायिक वेब साइट लिखने की कोशिश कर रहा हूं। "मानक" द्वारा, मेरा मतलब है कि यह साइट फ्रंट-एंड के लिए सामान्य HTML5, CSS और जावास्क्रिप्ट रन करती है, बैक-एंड (सामान प्रोसेस करने के लिए), और डेटाबेस के लिए MySQL चलाता है। यह एक मूल CRUD साइट है: सामने वाला अंत में जो कुछ भी डेटाबेस में स्टोर करता है वह सुंदर बनाता है; बैकएंड डेटाबेस को लिखता है जो भी उपयोगकर्ता प्रवेश करता है और कुछ प्रसंस्करण करता है। ज्यादातर साइटों की तरह वहाँ से बाहर।

कोडिंग शुरू करने के लिए अपने गितुब रिपॉजिटरी बनाने में, मैंने महसूस किया है कि मैं फ्रंट-एंड बैक-एंड और एपीआई के बीच अंतर को नहीं समझता हूं । मेरे सवाल का एक और तरीका है: एपीआई इस तस्वीर में कहाँ आता है?

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

कुछ और विवरण:

  • मैं मॉडल-व्यू-कंट्रोलर पैटर्न आज़माना चाहता हूं। मुझे नहीं पता कि यह प्रश्न / उत्तर बदलता है या नहीं।
  • एपीआई रेस्टफुल होगा
  • मैं चाहता हूं कि बैक-एंड को विशेष प्रश्नों को कॉल करने और कॉल करने की अनुमति देने के बजाय मैं अपने स्वयं के एपीआई का उपयोग करूं । मुझे लगता है कि यह शैली अधिक सुसंगत है।

मेरे सवाल:

  • क्या फ्रंट-एंड बैक-एंड को कॉल करता है जो एपीआई को कॉल करता है? या फ्रंट-एंड बस बैक-एंड को कॉल करने के बजाय एपीआई को कॉल करता है?
  • क्या बैक-एंड बस एक एपीआई को निष्पादित करता है और एपीआई बैक-एंड को कंट्रोल करता है (जहां बैक-एंड अंतिम कार्य को दर्शाता है, कार्यों को दर्शाता है)?

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

जवाबों:


25

मुझे लगता है कि जिस तरह से कई वेब डेवलपर्स द्वारा एपीआई का दुरुपयोग और दुरुपयोग किया जा रहा है, उससे आप भ्रमित हो रहे हैं।

  • एपीआई का अर्थ है एप्लीकेशन प्रोग्रामिंग इंटरफ़ेस, अर्थात विभिन्न प्रणालियों (या एक ही सिस्टम के कुछ हिस्सों) के बीच कोई आधिकारिक रूप से निर्दिष्ट इंटरफ़ेस।
  • कुछ समय पहले, वेब स्टार्टअप के लिए वेब सेवा एपीआई के माध्यम से अपने कुछ आंतरिक डेटा तक सार्वजनिक पहुंच प्रदान करना एक बड़ी बात हो गई, आमतौर पर REST और JSON का उपयोग करके, इस प्रकार तृतीय-पक्ष डेवलपर्स को अपने सिस्टम के साथ एकीकृत करने की अनुमति मिलती है। वेब डेवलपर्स ने विशेष रूप से (और केवल) "publically सुलभ वेब सेवा" का मतलब करने के लिए "एपीआई" शब्द का उपयोग करना शुरू किया, और इसके कार्यान्वयन को शामिल करने के लिए इसका दुरुपयोग किया।
  • दृश्यपटल और बैकएंड के संदर्भ में, इस वेब सेवा एपीआई (और इसके कार्यान्वयन) है बैकएंड । इसके कुछ हिस्से युवा रूप से सुलभ हो सकते हैं और अन्य केवल आपके दृश्यपटल पर।
  • इसके लिए एक अलग नाम "सर्विस लेयर" है, अर्थात कोड
    • उन सेवाओं का प्रतिनिधित्व करता है जिन्हें फ्रंटेंड कॉल करता है
    • कोई प्रदर्शन तर्क नहीं है (यह फ्रंटएंड का काम है, सब के बाद)
    • अधिक सरल और CRUD क्रियाओं की तुलना में अधिक सारगर्भित और मोटे हैं (एक सेवा कॉल में अक्सर कई CRUD कार्रवाइयां शामिल होती हैं और इसे डेटाबेस लेनदेन के भीतर निष्पादित किया जाना चाहिए)।
    • अनुप्रयोग का व्यावसायिक तर्क समाहित करता है

मेरे पास एक बहुत गूंगा सवाल है। क्या यह सेवा उन्मुख वास्तुकला का सार है?
जॉनी

@ जॉनी: नहीं - एसओए एब्सट्रैक्शन के बहुत उच्च स्तर पर एक अवधारणा है, यह अधिक है कि आप तकनीकी परतों की तुलना में अपने व्यवसाय की कार्यक्षमता को कैसे व्यवस्थित करते हैं।
माइकल बोर्गवर्ड

मैं इसे दुरुपयोग नहीं कहूंगा। शायद "रिब्रांडिंग"? यह "एमवीसी" के साथ भी ऐसा ही है जो वेबडेवलपमेंट के संदर्भ में है जब शब्द गढ़ा गया था तो PARC की तुलना में पूरी तरह से अलग है।
थॉमस जंक

9

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

स्पष्टता के लिए, हम जिन शब्दों का उपयोग कर रहे हैं, वे हैं:

  • क्लाइंट : HTML5 अनुरूप ब्राउज़र, esp। डोम और जावास्क्रिप्ट ने इसे हेरफेर करने के लिए लोड किया।
  • फ़्रंट-एंड : PHP सर्वर जिसे DOM को इंगित किया जाता है, जिसमें दोनों व्यक्तिगत पेज और कुछ AJAX स्टाइल XML या JSON एक्सेस पॉइंट्स होते हैं।
  • बैक-एंड : एक डेटाबेस सर्वर, जहां MySQL चलता है।

ठीक से डिज़ाइन किए गए कार्यक्रम के लिए, इन घटकों में से प्रत्येक के पास दूसरों के साथ संवाद करने के लिए एक निजी एपीआई है। "फ्रंट-एंड" PHP कोड SELECTसीधे मनमाने ढंग से SQL स्टेटमेंट जारी नहीं करता है , बल्कि संग्रहीत प्रक्रियाओं, पूर्व-अधिकृत SQL, या यहां तक ​​कि अलग PHP को PHP के एक पूरी तरह से अलग उदाहरण में कॉल करता है जो बैक-एंड सर्वर पर चलता है । ये संग्रहीत कार्यविधियाँ या विशिष्ट HTTP कॉल स्वयं एक एपीआई हैं।

अगर हम अपने डिजाइन की कुछ अशुद्धता के लिए अनुमति देते हैं तो भी परिभाषा नहीं बदलती है। यदि आपकी PHPफ़ाइल MySQL से सीधे SQL स्ट्रिंग लिखती है और भेजती है, तो यह एक API है , जो एक बहुत ही असामान्य है, जिसे आप दोहराने की संभावना नहीं है।

ध्यान दें कि यह पूरी तरह से संभव है कि आपके सामने के छोर को कड़ाई से सिंक्रोनस किया जाए, जिसमें कोई AJAX वूडू न हो। यदि आप उक्त समकालिक फ़ाइल में समान बाहरी PHP फ़ंक्शंस कहते हैं, तो आप उन्हें क्लाइंट-साइड वर्जन के समान API का उपयोग करने पर विचार कर सकते हैं, हालांकि यहाँ "API" शब्द का उपयोग कोई वास्तविक स्पष्टता नहीं दे सकता है।

एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस के रूप में एक एपीआई , सब के बाद, और वास्तव में किसी भी समय एक प्रोग्राम को अपनी प्रक्रिया के बाहर कॉल करता है। यदि आप एक ऐसी परियोजना लिख ​​रहे हैं, जिसमें फ्रंट-एंड और बैक-एंड दोनों हैं, तो AJAX / PHP / MySQL ऊपर या MS Access / SQL सर्वर के रूप में हो, यह यह निर्दिष्ट करने के लिए सार्थक है कि आप एक-दूसरे को कैसे कॉल करेंगे? यदि किसी अन्य कारण से यह जानना आसान नहीं है कि कुछ टूटने पर उसे कहाँ देखना है।

(और सार्वजनिक एपीआई का विषय पूरी तरह से कुछ और है। ऊपर हमारे उदाहरण में, केवल ग्राहक में प्रदर्शित URL "सार्वजनिक एपीआई" है। बाकी सब कुछ, संक्षेप में, "निजी" है। जैसा कि आप उम्मीद नहीं करते हैं। आपके आंतरिक एपीआई को कॉल करने के लिए आपके नियंत्रण से परे कोई भी कोड, और आप या तो ऐसे परिणामों को एकमुश्त अस्वीकार करते हैं या भविष्य में ऐसा करने का अधिकार सुरक्षित रखते हैं।


3
दरअसल फ्रंटेंड क्लाइंट साइड कोड (HTML, जावास्क्रिप्ट) है और बैकएंड सर्वर कोड (PHP, पायथन, रूबी) है।
पिथिकोस

-3

एक एपीआई http अनुरोधों जैसे कि GET, POST, FETCH, DELETE ... का उपयोग करता है, जो कि विशिष्ट प्रारूप जैसे कि json, xml, आदि में डेटा पुनः प्राप्त करने के लिए आपके टोकन एक्सेस के आधार पर उपयोग किया जा सकता है।

यह "डेटा" एपीआई (एप्लीकेशन प्रोग्रामिंग इंटरफेस) प्राप्त करने के लिए अपने स्वयं के अनुप्रयोग में उपयोग किया जा सकता है जो डेटा इकट्ठा करने के लिए एक सार्वजनिक सुलभ वेब सेवा है जो कुछ दर्शकों के लिए दिलचस्प हो सकती है।

यह डेटा विफल हुए डेटा का एक सेट लौटा सकता है जो इसे विफल कर सकता है या इसके एपीआई सर्वर से डेटा पुनर्प्राप्त कर सकता है

एपीआई का मतलब बैक एंड है इसलिए इसे किसी भी फ्रंट एंड एनवायरनमेंट में इस्तेमाल किया जा सकता है। इसका मतलब है कि इसका उपयोग वेब, एंड्रॉइड, आईओएस ... एप्लिकेशन में किया जा सकता है जो https अनुरोधों को संभाल सकता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.