In termini profani, cos'è un'API?
La parola chiave è interfaccia. Una UI è un'interfaccia utente, è il modo in cui i pulsanti sullo schermo sono disposti, cosa permettono di fare quei pulsanti quando li si clicca, quanti pulsanti ci sono, se è per principianti o esperti, ecc.
Un'API è un'interfaccia per programmatori. I pulsanti sono comandi come getFriendsOf("Mike") e le risposte potrebbero essere amici: {"Mark", "Bush", "Drake"}
Con un'interfaccia utente avresti cliccato sul pulsante amici e avresti visto una lista di foto e nomi. Per visualizzare tutto ciò, il programmatore deve prima passare attraverso ogni nome e trovare la foto associata.
- getFriendsOf("Mike") risponde -> friends: {"Mark", "Bush", "Drake"}
- findPhoto("Mark") risponde -> foto: {"markprofilewedding"}
- findPhoto("Bush") risponde -> foto: {"bushdonutchoke"}
- findPhoto("Drake") risponde -> foto: {"darkleatherpants"}
- then display each photo with name of friend
A more convenient interface would have been showFriendsOf("Mike") and somewhere under the hood, another programmer would have written out the inconvenient form. Questo è un comando meno flessibile, può mostrare solo le foto e i nomi sullo schermo, a volte volete solo le foto ma va bene per la maggior parte dei casi.
Nell'analogia del ristorante, potreste ordinare una bistecca ben cotta, ma non dite allo chef tutti i dettagli di come farla, come quanto tempo scaldarla, quando peparla, su che tipo di piatto metterla. Se vi metteste sopra lo chef, sarebbe molto infastidito. Ci sono intese simili tra i servizi web e i programmatori che ordinano liste di amici.
Similmente con una UI di pulsanti, non stai cliccando pulsanti per specificare se visualizzare una lista di amici a sinistra o a destra. Qualcun altro ha preso la decisione in base a ciò che la maggior parte delle persone vorrebbe. La maggior parte delle persone non va al ristorante per dare ordini allo chef, quindi pochi chef offrono questi servizi.
Le UI e le API sono solo modi per nascondere la complessità dei servizi web, proprio come nel mondo reale specialisti come chef, ferraioli, architetti gestiscono le complessità del loro mestiere in modo che voi possiate essere liberi di imparare a programmare.