indexante

Jugando con Representational State Transfer

No se asuste, Representational State Transfer o REST, no es más que :

una técnica de arquitectura de software para sistemas hipermedia distribuidos como la World Wide Web.

Osea una forma sencilla para acceder a datos usando XML via HTTP, frecuentemente usado en API’s de sitios tan populares como Technorati, Yahoo, Youtube, Bloglines, Amazon y otros.

Y si, como concluiste gran parte de la blogosfera esta basada en REST al usar sindicación.

Bueno, lo que no encuentras en la Wikipedia son ejemplos, asi que para ello necesitamos :

Ya con ello primero hacemos la conexión usando una URL sencilla como :
http://www.bloglines.com/search? format=publicapi &apiuser=[NombreDeUsuario] &apikey=[Api-ID]&q=[TerminoBuscado]

Donde [NombreDeUsuario] es el nombre de usuario con el que accedes a tu cuenta en bloglines, [Api-ID] es tu API Access Key y [TerminoBuscado] es ¡oh maravilla! el termino que buscas.

Esta direccion devolvera una archivo XML, donde cada resultado se ve más o menos así :
&lt;result id="0" siteid="8075741" itemid="607" inline="0" date="Sab, 6 Ene 2007 20:29:00 GMT" citations="17"&gt; &lt;site nsubs="1"&gt; &lt;name&gt;RSS Feed from BlinkList.com&lt;/name&gt; <strong>&lt;url&gt;http://www.blinklist.com&lt;/url&gt;</strong> &lt;feedurl&gt;http://www.blinklist.com/tag/ruby/rss.xml&lt;/feedurl&gt; &lt;/site&gt; <strong>&lt;title&gt;Introducción a Ruby on Rails | Asociación Nacional de Webmasters...&lt;/title&gt;</strong> &lt;abstract&gt;...tutorial de ruby..&lt;/abstract> &lt;url&gt;http://www.anwmp.org/&lt;/url&gt; &lt;/result&gt;

Entonces ya sabemos donde buscar y que extraer, así que primero obtenemos el documento XML asi :
$url='http://www.bloglines.com/search?'; $url.='format=publicapi'; $url.='&apiuser=[NombreDeUsuario]'; $url.='&apikey=[Api-ID]&q=[TerminoBuscado]'; $dom = new <a href="http://www.php.net/manual/en/function.dom-domdocument-load.php">DomDocument()</a>; $dom->load($url); $resultados = $dom-><a href="http://www.php.net/manual/en/function.dom-domdocument-getelementsbytagname.php">getElementsByTagName</a>('result');
Para luego extraer los resultados usando un bucle foreach, donde a cada iteracion llegamos a datos como el url o el titulo así :
foreach($resultados as $nodo) { $enlace = $nodo->getElementsByTagName('url')->item(1)->textContent; $titulo = $nodo->getElementsByTagName('title')->item(0)->textContent; }

Puedes ver el ejemplo en funcionamiento y descargarte el código .

Ya con eso puede hacer cosas como seguir experimentando con otros API’s, leer feeds (que finalmente son archivos XML) o implementar un API en tu sitio que no es nada difícil.

Nos vemos en próximos posts, por favor tenga la bondad de ser feliz :)

» tags :
autorIndexante es la bitácora de Cesar Soplin Sánchez acerca de usabilidad, arquitectura de información, desarrollo web y ad infinitum.
Feed de indexante.comFeed RSS indexante.com