La API di Twitter, e non solo, si basano sull’architettura REST. Quindi, ciò che segue in questo articolo e applicabile a qualsiasi API basata sulla medesima architettura.
In pratica, un’API RESTfull (cioè che segue i principi REST) è una risorsa HTTP che risponde a determinate richieste fatte tramite il protocollo HTTP standard, quindi GET o POST. Tale risorsa è identificata tramite un URL classico.
Twitter è una rete e un servizio di micro-blog che permette agli utenti di mandare aggiornamenti via SMS, IM, e-mail ed appunto le sue APIs. I messaggi pubblicati hanno lo scopo di informare gli altri su ciò che si sta facendo in un determinato momento.
Con questo articolo vedremo com’è possibile creare un applicazione autonoma che invia un messaggio in Twitter al verificarsi di un determinato evento, ad esempio, alla pubblicazione di un nuovo articolo sul proprio blog.
Per prima cosa, identifichiamo gli attori che concorreranno alla realizzazione di questo progetto.
Il linguaggio è il PHP 5. Visto che occorre fare delle richieste HTTP POST, il bouquet di funzioni cUrl è la soluzione più snella e rapida da utilizzare, visto che si preoccuperà di fare il “lavoro sporco” in maniera autonoma.
Oltre alla parte di sviluppo, dobbiamo individuare la risorsa API a cui inviare le richieste e come inviarle. Questa è la parte più facile visto che Twitter offre una chiara documentazione. Ciò che cerchiamo è sotto la voce Status Methods > update.
Nella parte introduttiva della documentazione viene detto che, per inviare le richieste, occorre fare un’autenticazione chiamata HTTP Basic; vedremo poi in seguito come implementarla con cUrl, ci basti sapere ora che questa consiste nella coppia username e password di Twitter, separati da due punti (:).
Inoltre, ogni risorsa API può rispondere in XML, JSON, RSS ed Atom. Per scegliere il formato della risposta, basta utilizzare tale formato come estensione della risorsa. Da non dimenticare anche il fatto che le richieste vanno codificate in UTF-8.
Dopo queste premesse, possiamo iniziare a “sporcarci le mani” col codice.
Le funzioni cUrl aprono una connessione ad un risorsa ed eseguono su di essa tutte le operazioni che vogliamo. Vediamo come aprire una connessione ad una risorsa:
$handler_curl = curl_init(); curl_setopt($handler_curl, CURLOPT_URL, 'http://twitter.com/statuses/update.xml');
Possiamo poi scegliere se attenderci una risposta oppure no. Per recuperare la risposta aggiungiamo questa riga:
curl_setopt($handler_curl, CURLOPT_RETURNTRANSFER, 1);
Abbiamo detto precedentemente che le APIs di Twitter si attendono un’autenticazione di tipo HTTP Basic. Questa viene eseguite da cUrl aggiungendo due righe. La prima indica il tipo di autenticazione, la secondo invia la username e la password per autenticarsi.
curl_setopt($handler_curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($handler_curl, CURLOPT_USERPWD, 'username:password');
Fatto questo, possiamo inviare i dati per aggiornare il nostro stato, o per dirla in maniera conforme all’esempio che stiamo facendo, possiamo dire a tutti che abbiamo aggiunto un nuovo articolo al nostro blog. Per farlo, indichiamo il metodo col quale intendiamo inviare i dati, e cioè il POST e poi inviamo il dato.
curl_setopt($handler_curl, CURLOPT_POST, 1);
curl_setopt($handler_curl, CURLOPT_POSTFIELDS, utf8_encode("status=Ho aggiunto un nuovo articolo al mio blog"));
La funzione utf8_encode serve a codificare la richiesta in UTF-8, così come richiede la documentazione.
A questo punto tutto è pronto per essere eseguito e per ricevere la risposta. Entrambi le cose si fanno con un unico comando:
echo curl_exec($handler_curl);
Una volta eseguita la richiesta e recuperata la risposta, possiamo chiudere la connessione con la risorsa e liberare la memoria. Lo facciamo con queste ultime due righe di codice:
curl_close($handler_curl); unset($handler_curl);
A questo punto, dobbiamo fare in modo che ogni volta che viene aggiunto un articolo al nostro blog, questa porzione di codice venga eseguita.
Come abbiamo visto, con sole 10 righe di codice, siamo in grado di implementare un sistema REST con autenticazione ed invio dati. Ovviamente, come dicevo all’inizio dell’articolo, questo procedimento vale per qualsiasi altra API RESTfull, ed in genere, non occorre conoscere niente altro che le funzioni appena illustrate.














