Guida base ai servizi RESTful

Guida base ai servizi RESTful

I servizi web RESTful (acronimo per REpresentational State Transfer) si basano su un’architettura che sfrutta (quasi sempre) HTTP come protocollo di comunicazione, e permettono di esporre come risorse esterne funzioni, dati e in generale servizi scalabili, snelli e facilmente mantenibili. Il loro uso è ormai estremamente comune all’interno dei siti web, e moltissimi servizi famosi stanno esponendo le proprie API RESTful ai programmatori di tutto il mondo. Le specifiche REST si basano sulla tesi di dottorato di Roy Thomas Fielding, ed i dettagli implementativi sono stati molto discussi (e spesso confusi) negli anni.

La maggioranza dei linguaggi per il web, di fatto, permette di realizzare API di questo tipo e di esporle all’esterno con particolari procedure. I servizi di questo genere sono integrabili molto flessibilmente e non richiedono di utilizzare lo stesso linguaggio con cui sono stati sviluppati; ad esempio, potremmo interrogare una API RESTful sviluppata in PHP utilizzando Javascript, oppure integrare il risultato di un’interrogazione dentro una qualsiasi app per mobile.

Tutti i sistemi che aderiscono ai vincoli REST (senza scendere troppo nel dettaglio, sono i seguenti: client-server, stateless, cacheable, layered system, code on demand, uniform interface) sono detti RESTful, e permettono di inviare e ricevere dati secondo i classici standard di HTTP (GET, PUT ecc.). I sistemi RESTful si espongono come “risorse” identificate da URI (Uniform Resource Identifiers) univoci, come ad esempio:

/persone/salvatorecapolupo

e permettono di essere interrogati con comandi quali:

GET /persone/salvatorecapolupo

Un servizio web RESTful dispone dunque di metodi di accesso predefiniti (GET, PUT, DELETE, POST, …) che permettono di leggere, creare, rimuovere, aggiornare una determinata risorsa; qui per risorse, come detto poc’anzi, si può intendere un qualsiasi elemento che rappresenti lo stato di un sistema (ad esempio il valore della quotazione di un titolo in borsa), oppure più genericamente un servizio che mi fornisca il risultato (ad esempio l’uptime di un certo URL).

Se interroghiamo una API RESTful in Javascript, ad esempio mediante GET avverrà questo a livello interno:

GET http://www.example.this/is/my/request.html HTTP/1.1
Host: www.example.this
Accept: text/html,application/xhtml+xml,application/xml; …
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 …
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,hi;q=0.6

ed otterremo una risposta che dovremo poi formattare con un parser, e che tipicamente è in formato XML o (più comunemente) JSON:

<Person>
<ID>660</ID>
<Name>Capolupo</Name>
<Email>s.capolupo@gmail.com</Email>
<Country>Italy</Country>
</Person>

oppure, equivalentemente:

{
    "ID": "660",
    "Name": "Capolupo",
    "Email": "s.capolupo@gmail.com",
    "Country": "Italy"
}

I linguaggi più ad alto livello ovviamente nascondono i dettagli di funzionamento di REST, e permettono all’utente di interfacciarsi con sistemi complessi in modo semplice, rapdo e senza dover nè installare nulla nè condividere dati di sessione. Dopo ogni chiamata REST, il server è pronto a ricevere la successiva, e questo rende tali servizi particolarmente adatti all’interno di sistemi che impongano richieste frequenti e veloci (quotazioni in borsa, geo-localizzazione, aste online ecc.).

A livello pratico, esistono moltissimi servizi web RESTful, di cui facciamo spesso uso senza saperlo, disponibili sia gratuitamente che a pagamento; di seguito ne elenco alcuni tra i più famosi.

  • Google – Fornisce quasi la totalità dei propri servizi come API RESTful, ad esempio per Gmail come per Google Translate. In genere l’uso di questi servizi richiede un account Google Cloud.
  • SoundCloud – La API RESTful del famoso sito per caricare ed ascoltare musica permette di disporre di un player per lo streaming integrabile su qualsiasi piattaforma, che è molto comune interrogare direttamente in Javascript.
  • Vimeo – Anche il celebre servizio di video streaming offre una ricca API per gestire video e playlist.
  • Mashape – Forse una delle raccolte di web service tra le più celebri al mondo, che ha esposto tutti i propri servizi pubblicamente disponibili su PublicAPI. Troverete servizi per fare un po’ di tutto, da inviare SMS ad interrogare database esterni che potrete poi integrare nelle vostre applicazioni.
  • Yahoo – Offre un’enorme database ricercabile di servizi, sia gratuiti che a pagamento.
Ti piace questo articolo?

1 voto

Su Trovalost.it puntiamo sulla qualità dei contenuti da quando siamo nati: la tua sincera valutazione può aiutarci a migliorare ogni giorno.

Guida base ai servizi RESTful

Votato 10 / 10, da 1 utenti