Distinzione tra API e frontend-backend

17

Sto cercando di scrivere un sito web aziendale "standard". Con "standard", intendo questo sito esegue il solito HTML5, CSS e Javascript per il front-end, un back-end (per elaborare le cose) e esegue MySQL per il database. È un sito CRUD di base: il front-end rende semplicemente qualsiasi cosa abbia in serbo il database; il backend scrive nel database qualunque sia l'utente che entra e fa qualche elaborazione. Proprio come la maggior parte dei siti là fuori.

Durante la creazione dei miei repository Github per iniziare la codifica, mi sono reso conto che non capisco la distinzione tra back-end front-end, e API . Un altro modo per esprimere la mia domanda è: dove entra l'API in questa immagine?

Ho intenzione di elencare alcuni dettagli e poi le domande che ho - spero che questo ti dia un'idea migliore di quale sia la mia domanda attuale, perché sono così confuso che non conosco la domanda specifica da porre .

Altri dettagli:

  • Mi piacerebbe provare il pattern Model-View-Controller. Non so se questo cambi la domanda / risposta.
  • L'API sarà RESTful
  • Mi piacerebbe che il mio back-end utilizzi la mia API anziché consentire al back-end di imbrogliare e chiama query speciali. Penso che questo stile sia più coerente.

Le mie domande:

  • Il front-end chiama il back-end che chiama l'API? Oppure il front-end chiama l'API invece di chiamare il back-end?
  • Il back-end esegue semplicemente un'API e l'API restituisce il controllo al back-end (dove il back-end funge da controller definitivo, delegando le attività)?

Sono incoraggiate risposte lunghe e dettagliate che spiegano il ruolo dell'API accanto al back-end di front-end. Se la risposta dipende dal modello di programmazione (modelli diversi dal modello Model-View-Controller), descrivere questi altri modi di pensare all'API. Grazie. Sono molto confuso.

    
posta Jason 29.06.2013 - 22:46
fonte

2 risposte

22

Penso che tu sia confuso dal modo in cui il termine API viene usato e abusato da molti sviluppatori web.

  • API significa interfaccia di programmazione dell'applicazione, ovvero un'interfaccia ufficialmente specificata tra diversi sistemi (o parti dello stesso sistema).
  • Qualche tempo fa, è diventato fondamentale per l'avvio Web offrire l'accesso pubblico ad alcuni dei propri dati interni tramite un'API di servizi Web, in genere utilizzando REST e JSON, consentendo così agli sviluppatori di terze parti di integrarsi con i propri sistemi. Gli sviluppatori Web hanno iniziato a utilizzare il termine "API" per indicare specificamente (e solo) "servizio web accessibile pubblicamente" e utilizzarlo in modo scorretto per includerne l'implementazione.
  • In termini di frontend e backend, questa API del servizio Web (e la sua implementazione) è il back-end . Alcune parti di esso possono essere pubblicamente accessibili e altre solo al tuo frontend.
  • Un nome diverso per questo è "livello di servizio", cioè il codice
    • rappresenta i servizi che il frontend chiama
    • non contiene alcuna logica di visualizzazione (questo è il lavoro del frontend, dopotutto)
    • è più astratto e di grana grossa delle semplici azioni CRUD (una chiamata di servizio spesso implica più azioni CRUD e deve essere eseguita all'interno di una transazione di database).
    • contiene la logica di business dell'applicazione
risposta data 30.06.2013 - 00:08
fonte
7

Analizziamo l'architettura di un sito web "tipico", con un "front-end" e un "back-end". E dal momento che è un sito Web, anche noi abbiamo un "cliente" esplicito. (Dal momento che non c'è modo per JavaScript in un browser di chiamare direttamente MySQL su un server.)

Per maggiore chiarezza, i termini che utilizziamo sono:

  • Client : il browser compatibile con HTML5, esp. il DOM e il JavaScript lì caricato per manipolarlo.
  • Front-end : il server PHP a cui è rivolto il DOM, contenente sia la singola pagina richiesta che alcuni punti di accesso XML o JSON in stile AJAX.
  • Back-end : un server di database, dove viene eseguito MySQL.

Per un programma progettato correttamente, ciascuno di questi componenti ha un'API privata per comunicare con gli altri. Il codice PHP "front-end" non rilascia istruzioni arbitrarie di SQL SELECT direttamente, ma chiama stored procedure, SQL pre-autorizzato, o anche chiamate PHP distinte a un'istanza completamente diversa di PHP che esegue sul retro -end server . Queste stored procedure o chiamate HTTP distinte sono a loro volta un'API.

La definizione non cambia anche se permettiamo qualche impurità del nostro design. Se il tuo file PHP scrive e invia una stringa SQL direttamente a MySQL, È ANCORA UN'API , anche se molto insolito che è improbabile che tu possa ripetere.

Nota che è del tutto possibile che il tuo php front-end sia strettamente sincrono, senza alcun voodoo AJAX. Se chiami le stesse funzioni PHP esterne in detto file sincrono, potresti considerarle come se usassero la stessa API della verison lato client, anche se l'uso del termine "API" qui potrebbe non dare alcuna chiarezza.

Un'API come Application Programming Interface , dopo tutto, e si riferisce davvero a ogni volta che un programma chiama al di fuori del suo stesso processo. Se stai scrivendo un progetto che ha sia un front-end che un back-end, sono quelli AJAX / PHP / MySQL come sopra o MS Access / SQL Server, vale la pena specificare Esattamente come ti chiamerai l'un l'altro, se non altro per rendere più facile sapere dove guardare quando qualcosa si rompe.

(E l'argomento dell'API è completamente diverso. Nel nostro esempio precedente, solo l'URL visualizzato nel client è una "API pubblica". Tutto il resto è, in sostanza, "privato . "In questo modo, non ti aspetti alcun codice al di fuori del tuo controllo per chiamare la tua API interna e neghi tali risultati a titolo definitivo o ti riservi il diritto di farlo in futuro.

    
risposta data 29.06.2013 - 23:52
fonte

Leggi altre domande sui tag