Utilizando o Yahoo Query Language (YQL)

segunda-feira, 9 de janeiro de 2012


Atualmente, quase todos os Web sites populares têm uma API para desenvolvedor, permitindo que programadores de aplicativo da Web acessem e manipulem dados usando estruturas padrão, como REST e SOAP.

Por exemplo, a Google oferece as APIs Google Data para acesso aos serviços Google, como Google Buzz, Google Docs e Google Calendar. O Twitter tem uma API REST que permite que os usuários busquem e postem tweets e o Facebook oferece a API Graph para gerenciar perfis e conexões de usuários.

Apesar de essas APIs certamente melhorarem sua vida e proporcionarem uma variedade de novos aplicativos criativos, ainda existem alguns desafios. Por exemplo, um desafio principal de implementação é a falta de uniformidade entre as APIs de diferentes sites.

Alguns sites usam REST, enquanto outros usam SOAP. Alguns usam Atom para codificar dados de resposta, mas outros usam RSS, e outros ainda usam XML simples ou JSON. Como resultado, toda vez que você decidir integrar um novo serviço da Web em um aplicativo, primeiro é preciso ler muito e, em seguida, testar bastante para entender totalmente a mecânica da API de serviço antes de começar a integração.

Para resolver este problema específico, os desenvolvedores da Yahoo! decidiram inventar a Yahoo! Query Language, mais conhecida pela sigla YQL. A YQL oferece uma interface unificada similar à SQL para várias APIs de serviço da Web, simplificando de forma significativa a tarefa de integrar dados de terceiros em um aplicativo da Web.

Neste artigo em duas partes, apresentarei a YQL, ilustrando como é possível usá-la em combinação com minha linguagem favorita, a PHP, para construir aplicativos da Web sofisticados.

Entendendo YQL

Se estiver familiarizado com SQL, a YQL imediatamente parecerá familiar para você. De forma muito simples, a YQL trata serviços da Web individuais como se fossem tabelas de dados, permitindo que desenvolvedores formulem consultas similares à SQL para extrair informações.

O serviço YQL cuida da análise da sequência de consultas, executando-a no serviço remoto, e retornando os resultados em formato XML ou JSON padrão. A sequência de consultas em si é passada para o serviço YQL usando REST, como uma solicitação GET.

Para entender melhor esta abordagem, considere um exemplo simples. Suponha que deseje pesquisar no Twitter todos os posts contendo o termo "master chief." Sem o uso da YQL, normalmente isto seria feito usando a API Twitter Search, formulando uma solicitação como esta: http://search.twitter.com/search.atom?q=master%20chief&lang=en 

Como retorno, a API Twitter Search devolve uma feed Atom de resultados:


Com YQL, é possível simplificar as coisas acessando a tabela de dados do Twitter com uma consulta YQL, da seguinte forma:

SELECT * FROM twitter.search WHERE q='master chief';

Note que isto é quase exatamente como uma consulta SQL padrão: a palavra-chave SELECT indica que é uma operação de recuperação de dados, a palavra-chave FROM especifica a origem de dados e a cláusula WHERE especifica o filtro.

Depois de enviar esta consulta, a YQL retorna um documento XML ou JSON padrão com os resultados de sua consulta do Twitter:


Agora, vamos adiantar alguns dias e supor que você tenha decidido adicionar mais alguns dados a seu aplicativo da Web. Especificamente, suponha que gostaria de usar as informações de geocodificação que acompanham os resultados da procura do Twitter para exibir também um mapa da área geográfica de onde cada postagem se originou.

Além disso, suponha também que gostaria de acompanhar os resultados da procura do Twitter com uma lista de manchetes de notícias sobre o termo de procura "master chief."

Sem o uso de YQL, seria preciso gastar algum tempo lendo a documentação das APIs do Yahoo! Maps e Google News antes de realizar esta tarefa. Com YQL, é tão simples quanto adicionar algumas consultas:

SELECT * FROM maps.map WHERE latitude="XX" AND longitude="YY"



Os resultados da consulta claramente indicam que o maior benefício da YQL reside em apresentar uma interface unificada para serviços da Web de terceiros.

Ao permitir a consulta a serviços de terceiros usando sintaxe SQL comumente compreendida, a YQL economiza tempo e esforço e facilita a integração de dados de diversas origens em um aplicativo da Web.

A capacidade de selecionar XML ou JSON como formatos de saída também é útil, permitindo maior flexibilidade e o uso de programação no lado do servidor (PHP Perl, por exemplo) ou ferramentas do lado do cliente (jQuery ou mooTools, por exemplo) para acessar e manipular os dados resultantes.


Usando o YQL Console

A forma mais fácil de começar com YQL é por meio do YQL Console, uma ferramenta online interativa que permite formular e testar consultas YQL instantaneamente. O YQL Console localiza-se na Yahoo! Developer Network e possui ferramentas de diagnóstico, consultas de amostra e uma lista de tabelas disponíveis.

Para ver como esta ferramenta funciona, navegue para o YQL Console e insira a seguinte consulta para obter uma lista de álbuns musicais populares no momento:

SELECT * FROM music.release.popular;

Ao enviar o formulário, a sequência de consultas é enviada para o serviço YQL como uma sequência de consulta codificada com URL. O serviço YQL, a seguir, procura a definição de tabela, realiza a consulta e retorna os resultados. A Figura 5 ilustra como se parece a saída no YQL Console.



Endereço do YQL: http://developer.yahoo.com/yql/

Artigo via iMasters.

Nenhum comentário:

Postar um comentário