Sostanzialmente quando si parla di API si sta parlando di un modo che può usare una applicazione per parlare con un'altra, qui ci concentreremo su un particolare tipo di API molto diffuso attualmente sul WEB: REpresentational State Transfer (solitamente scritto usando l'acronimo REST).
REST
Questo tipo di architettura si presta molto bene all'uso in sistemi client/server come quelle WEB e ha le seguenti caratteristiche:
- usa HTTP come protocollo per trasferire i dati
- non usa le sessioni: ogni richiesta viene elaborata senza tener conto delle richieste precedenti
- gli oggetti vengono indicati tramite URL (es: https://api.magazzino.com/fornitore/138)
- le azioni da compiere sull'oggetto sono quelle di HTTP
Altri aspetti comodi di questo tipo di API sono anche:
- i parametri (in particolare per le ricerche) sono forniti utilizzando il solito sistema del GET di HTTP
- normalmente la risposta può essere fornita in più formati ma JSON è quello più usato
- per provare e sufficiente avere un browser (nel qual caso un plugin come RESTClient per Firefox possono semplificare la vita) oppure programmi dedicati come Postman che però richiede di registrarsi.
Moltissimi servizi on-line permetteno di interfacciarsi usando delle API pubbliche che molto spesso sono REST, l'unico inconveniente è che per poterle usare è necessario usare delle chiavi di accesso che vengono concesse ad ogni utente (oppure alle singole applicazioni che si vogliono creare) previa registrazione; questo vale per Facebook, Instagram, Google e tantissimi altri.
GitHub
GitHub permette l'accesso (limitanto il numero di richieste al minuto) anche senza registrazione utilizzando una API REST, questo ci permette di fare alcuni esperimenti.
Come primo esperimento possiamo provare a fare una ricerca per
trovare un progetto su GitHub, per farlo seguiamo le idicazioni
Search repositories e visto che vogliamo cercare un progetto sui quesitonari
scritto in php usiamo la URL
https://api.github.com/search/repositories?q=questionario+language:php
e inviamo una richiesta GET
al server che come risposta ci fornisce
un oggetto JSON che elenca tanti progetti (la risposta non viene riportata qui per
intero perché è lunga 170kB, quella qui sotto è stata pesantemente scorciata senza
però semplificarne la struttura).
Dall'attributo branches_url
della risposta qui sopra
possiamo trovare altre indicazioni...
Richiedendo con il metodo GET la URL https://api.github.com/repos/SoftwareIISGubbio/questionario/branches otteniamo
un elenco di raminon è del tutto esatto rami e relative descrizioni lo stato di svilupono, dovresti provare a caricare la URL