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 :
- una cuenta en bloglines
- un ID de desarrollador para usar el API
- PHP 5
- Entender XML
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í :
<result id="0" siteid="8075741" itemid="607" inline="0" date="Sab, 6 Ene 2007 20:29:00 GMT" citations="17">
<site nsubs="1">
<name>RSS Feed from BlinkList.com</name>
<strong><url>http://www.blinklist.com</url></strong>
<feedurl>http://www.blinklist.com/tag/ruby/rss.xml</feedurl>
</site>
<strong><title>Introducción a Ruby on Rails | Asociación Nacional de Webmasters...</title></strong>
<abstract>...tutorial de ruby..</abstract>
<url>http://www.anwmp.org/</url>
</result>
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 :)
Indexante es la bitácora de Cesar Soplin Sánchez acerca de usabilidad, arquitectura de información, desarrollo web y ad infinitum.
Comentarios recientes
hace 2 días 6 horas
hace 2 días 9 horas
hace 3 semanas 6 días
hace 3 semanas 6 días
hace 4 semanas 3 días
hace 4 semanas 4 días
hace 4 semanas 5 días
hace 5 semanas 1 día
hace 5 semanas 6 días
hace 6 semanas 1 día