Tutte le API sono protocolli, ma non tutti i protocolli sono API. Ad esempio, la connessione tra una tastiera e la scheda madre è regolata da uno o più protocolli (PS / 2, USB, Bluetooth, ecc.), Ma certamente non la chiameremmo un'API. Un'API è una forma specializzata di protocollo che consente a due applicazioni, sottosistemi, ecc. (O due copie della stessa applicazione) di comunicare e possibilmente controllare a vicenda.
Le API sono anche ciò a cui ci riferiamo quando iniziamo a parlare di librerie, come OpenGL, Win32, .Net e così via. Il codice sorgente che scrivi in qualunque lingua tu usi chiama endpoint API, che a sua volta invoca le librerie e infine il sistema operativo o un determinato componente hardware. L'API astrae la macchina letterale o l'interpretazione di rete dallo sviluppatore in modo che possano concentrarsi sull'implementazione delle applicazioni piuttosto che preoccuparsi di in che modo tale funzionalità viene implementata nei livelli inferiori. In questo senso, le API sono una forma di astrazione.
Ad esempio, l'API SOAP di molte applicazioni aziendali consente agli sviluppatori di importare l'API nell'ambiente di sviluppo di loro scelta al fine di comunicare in modo prescritto. Una volta implementato, il software client può parlare al server e farlo inserire dati, aggiornare dati, recuperare dati, eliminare dati e così via, in un metodo prescritto dal server.
A volte, i protocolli e le applicazioni vengono denominati per coincidenza la stessa cosa, di solito come una questione di convenienza, o perché era il primo del suo genere. Nel tuo esempio, l'applicazione SSH utilizza il protocollo SSH per la comunicazione con un terminale basato su testo. Tuttavia, Git consente anche di utilizzare il protocollo SSH come forma di comunicazione per un repository upstream, ma Git non è chiamato SSH.
Ecco la differenza, tuttavia: l'uso di Git del protocollo SSH costituisce un'API, mentre l'uso dell'applicazione SSH del protocollo SSH è semplicemente un tunnel verso un server e non un'API. Comandi Git, come "push", "pull", "merge" e così via comunicano attraverso il protocollo SSH ma utilizzano l'API Git. La manipolazione del server tramite SSH richiede comandi aggiuntivi interpretati da una shell, in cui la shell funge da API e SSH funge da protocollo.