cURL, Php e le API pubbliche

Questo post vuole essere un’introduzione al discorso che svilupperò nelle prossime settimane sulle API pubbliche di diverse webapps, tra cui quelle di flickr, twitter, delicious e slideshare. A queste ne aggiungerò probabilmente delle altre, ma, prima di sbilanciarmi, mi riservo un’analisi di fattibilità…

Il frutto di questo lavoro dovrebbe essere presentato al romagnacamp di settembre, assemblato in un’applicazione unica messa su con la collaborazione di Valentino.

Le API di cui parlerò nei prossimi post sono tutte accessibili con richieste trasmesse attraverso delle semplici URL, cioè che rispettano il cosiddetto formato REST (Representational State Transfer).

Ad una richiesta REST, le API in questione risponderanno sempre con un blocco XML, che noi manipoleremo con del codice PHP.

Lo schema che seguiremo sarà sempre lo stesso, per tutte le webapps. Per accedere alle API ricorreremo alla libreria cURL.

curl is a command line tool for transferring files with URL syntax, supporting FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS and FILE. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, kerberos…), file transfer resume, proxy tunneling and a busload of other useful tricks.

In pratica, cURL è un’applicazione che funziona da prompt dei comandi e consente il trasferimento di file trasmettendo richieste sotto forma di URL. La libreria cURL può essere richiamata anche via PHP.

L’applicazione è supportata nativamente dai sistemi *nix, mentre va istallata sui sistemi Win e Mac.

Non mi soffermerò sul download e sull’istallazione di cURL per sistemi non *nix, rinviandovi all’ottimo tutorial di effetti collaterali.

Il mio suggerimento è, ovviamente, quello di utilizzare un servizio di hosting Linux. Se lavorate in locale, l’optimum è sempre LAMPP per Linux. Su un sistema Linux non c’è bisogno, come detto, di istallare cURL.

Se proprio non avete a portata di mano un sistema Linux, scaricate il pacchetto XAMPP (di XAMPP ho parlato qui).

Una volta istallato il server, con un semplice phpinfo() potrete verificare la presenza della libreria:

curl

Quando invocheremo le API dei vari servizi, seguiremo sempre lo stesso schema:

  • definizione dei parametri da trasmettere
  • connessione alla libreria curl
  • trasmissione della richiesta via curl
  • prelievo dei dati di risposta
  • manipolazione dei dati
  • output a video

Visto che dedichiamo a cURL questo post, vediamo come si accede alla libreria via PHP:

$url = "http://www.miosito.com/params";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
curl_close($ch);

$url è la URL della richiesta. La URL può contenere o meno una serie di parametri aggiuntivi. Questi possono essere definiti nella URL, ma possono anche essere impostati successivamente, con curl_setopt().
curl_init() apre la connessione a curl; curl_setopt() imposta una serie di opzioni. Nel primo (semplicissimo) esempio qui sopra, CURLOPT_RETURNTRANSFER chiede in risposta una stringa di testo (nei prossimi post vedremo perchè), mentre CURLOPT_URL passa a cURL la URL (con o senza i parametri); curl_exec() esegue la richiesta e curl_close() chiude la connessione.

Un elenco completo dei parametri, lo trovate qui.

Ora che abbiamo il materiale, possiamo passare alle prime richieste.

Continua…

Annunci