Unterscheidung zwischen API und Frontend-Backend

22

Ich versuche, eine "Standard" Business-Website zu schreiben. Mit "Standard" meine ich, dass diese Site das übliche HTML5, CSS und Javascript für das Front-End, ein Back-End (zum Verarbeiten von Dingen) und MySQL für die Datenbank ausführt. Es ist eine einfache CRUD-Site: Das Front-End macht einfach ziemlich alles, was die Datenbank auf Lager hat. Das Backend schreibt in die Datenbank, was auch immer der Benutzer eingibt, und führt eine Verarbeitung durch. Genau wie die meisten Seiten da draußen.

Als ich meine Github-Repositorys erstellte, um mit dem Codieren zu beginnen, wurde mir klar, dass ich den Unterschied zwischen dem Front-End-Back-End und der API nicht verstehe . Eine andere Möglichkeit, meine Frage zu formulieren, ist: Woher kommt die API in diesem Bild?

Ich werde einige Details und dann Fragen auflisten, die ich habe - hoffentlich gibt dies euch eine bessere Vorstellung davon, was meine eigentliche Frage ist, weil ich so verwirrt bin, dass ich die spezifische Frage nicht kenne, die ich stellen soll.

Einige weitere Details:

  • Ich möchte das Model-View-Controller-Muster ausprobieren. Ich weiß nicht, ob dies die Frage / Antwort ändert.
  • Die API ist RESTful
  • Ich möchte, dass mein Back-End meine eigene API verwendet, anstatt dass das Back-End betrügt und spezielle Abfragen aufruft. Ich denke, dieser Stil ist konsequenter.

Meine Fragen:

  • Ruft das Front-End das Back-End auf, das die API aufruft? Oder ruft das Front-End einfach die API auf, anstatt das Back-End aufzurufen?
  • Führt das Back-End nur eine API aus und die API gibt die Steuerung an das Back-End zurück (wobei das Back-End als ultimativer Controller fungiert und Aufgaben delegiert)?

Es werden ausführliche und ausführliche Antworten empfohlen, in denen die Rolle der API neben dem Front-End-Back-End erläutert wird. Wenn die Antwort vom Programmiermodell abhängt (andere Modelle als das Model-View-Controller-Muster), beschreiben Sie bitte diese anderen Denkweisen der API. Vielen Dank. Ich bin sehr verwirrt.

Jason
quelle

Antworten:

24

Ich denke, Sie werden durch die Art und Weise verwirrt, wie der Begriff API von vielen Webentwicklern missbraucht und missbraucht wird.

  • API bedeutet Application Programming Interface (Anwendungsprogrammierschnittstelle), dh eine offiziell festgelegte Schnittstelle zwischen verschiedenen Systemen (oder Teilen desselben Systems).
  • Vor einiger Zeit war es für das Web-Startup eine große Herausforderung, den öffentlichen Zugriff auf einige interne Daten über eine Web-Service-API zu ermöglichen, die normalerweise REST und JSON verwendet, um Drittanbieter-Entwicklern die Integration in ihre Systeme zu ermöglichen. Webentwickler verwendeten den Begriff "API", um spezifisch (und nur) "öffentlich zugänglichen Webdienst" zu bezeichnen, und missbrauchten ihn, um dessen Implementierung einzuschließen.
  • In Bezug auf die Frontend und Backend, das Web - Service - API (und deren Umsetzung) ist das Backend . Einige Teile davon sind möglicherweise öffentlich zugänglich, andere nur für Ihr Frontend.
  • Ein anderer Name dafür ist "Service-Layer", dh Code, der
    • Stellt Dienste dar, die das Frontend aufruft
    • enthält keine Anzeigelogik (das ist schließlich die Aufgabe des Frontends)
    • ist abstrakter und grobkörniger als einfache CRUD-Aktionen (ein Service-Aufruf umfasst häufig mehrere CRUD-Aktionen und sollte innerhalb einer Datenbanktransaktion ausgeführt werden).
    • Enthält die Geschäftslogik der Anwendung
Michael Borgwardt
quelle
Ich habe eine wirklich blöde Frage. Ist dies die Essenz einer serviceorientierten Architektur?
Johnny
@johnny: nein - SOA ist ein Konzept auf einer viel höheren Abstraktionsebene. Es geht mehr darum, wie Sie Ihre Geschäftsfunktionalität organisieren, als um technische Ebenen.
Michael Borgwardt
Ich würde es aber nicht als Missbrauch bezeichnen. Vielleicht "Rebranding"? Es ist dasselbe mit "MVC", das im Kontext der Webentwicklung etwas völlig anderes ist als in Zeiten von PARC, als der Begriff geprägt wurde.
Thomas Junk
9

Skizzieren wir die Architektur einer "typischen" Website mit einem "Front-End" und einem "Back-End". Und da es sich um eine Website handelt, haben wir auch explizit einen "Kunden". (Da JavaScript in einem Browser keine Möglichkeit bietet, MySQL auf einem Server direkt aufzurufen.)

Zur Verdeutlichung verwenden wir folgende Begriffe:

  • Client : Der HTML5-kompatible Browser, insb. das DOM und das dort geladene JavaScript, um es zu manipulieren.
  • Front-End : Der PHP-Server, auf den das DOM verweist, und der sowohl die einzelne angeforderte Seite als auch einige XML- oder JSON-Zugriffspunkte im AJAX-Stil enthält.
  • Back-End : Ein Datenbankserver, auf dem MySQL ausgeführt wird.

Für ein richtig gestaltetes Programm verfügt jede dieser Komponenten über eine private API, um mit den anderen zu kommunizieren. Der "Front-End" -PHP-Code gibt keine willkürlichen SQL- SELECTAnweisungen direkt aus, sondern ruft gespeicherte Prozeduren, vorautorisiertes SQL oder sogar unterschiedliche PHP-Aufrufe für eine ganz andere Instanz von PHP auf, die auf dem Back-End-Server ausgeführt wird . Diese gespeicherten Prozeduren oder eindeutigen HTTP-Aufrufe sind selbst eine API.

Die Definition ändert sich auch dann nicht, wenn wir eine gewisse Unreinheit in unserem Design berücksichtigen. Wenn Ihre PHPDatei eine SQL-Zeichenfolge schreibt und direkt an MySQL sendet, IST ES NOCH EINE API , wenn auch eine sehr ungewöhnliche, die Sie wahrscheinlich nicht wiederholen werden.

Beachten Sie, dass es durchaus möglich ist, dass Ihr Front-End-PHP absolut synchron ist, ganz ohne AJAX-Voodoo. Wenn Sie dieselben externen PHP-Funktionen in dieser synchronen Datei aufrufen, können Sie davon ausgehen, dass sie dieselbe API wie die clientseitige Version verwenden, obwohl die Verwendung des Begriffs "API" hier möglicherweise keine wirkliche Klarheit bietet.

Eine API ist schließlich eine Anwendungsprogrammierschnittstelle und bezieht sich wirklich auf jeden Zeitpunkt, zu dem ein Programm außerhalb seines eigenen Prozesses aufruft. Wenn Sie ein Projekt schreiben, das sowohl ein Front-End als auch ein Back-End hat, seien es AJAX / PHP / MySQL wie oben oder MS Access / SQL Server, sollten Sie genau angeben, wie Sie sich gegenseitig anrufen. wenn auch aus keinem anderen Grund, als um zu wissen, wo Sie suchen müssen, wenn etwas kaputt geht.

(Und das Thema der öffentlichen API ist noch etwas ganz anderes. In unserem obigen Beispiel ist nur die im Client angezeigte URL eine "öffentliche API". Alles andere ist im Wesentlichen "privat". Wie in erwartet man nicht Code, der sich Ihrer Kontrolle entzieht, um Ihre interne API aufzurufen, und Sie lehnen diese Ergebnisse entweder sofort ab oder behalten sich das Recht vor, dies in Zukunft zu tun.

DougM
quelle
2
Das Frontend ist der clientseitige Code (HTML, Javascript) und das Backend der Servercode (PHP, Python, Ruby).
Pithikos
-3

Eine API verarbeitet http-Anforderungen wie GET, POST, FETCH, DELETE ..., die abhängig von Ihrem Token-Zugriff zum Abrufen von Daten in einem bestimmten Format wie json, xml usw. verwendet werden können.

Diese "Daten" können in Ihrer eigenen Anwendung verwendet werden, um API (Application Programming Interface) zu erhalten. Hierbei handelt es sich um einen öffentlich zugänglichen Webdienst zum Sammeln von Daten, die für einige Benutzer interessant sein könnten.

Diese Daten können eine Reihe von Daten zurückgeben, die einen Fehler darstellen, oder Daten vom API-Server abrufen

API ist als Back-End gedacht und kann in jeder Front-End-Umgebung verwendet werden. Dies bedeutet, dass es in einer Web-, Android-, iOS- ... Anwendung verwendet werden kann, die https-Anforderungen verarbeiten kann

Balibrera
quelle