Yahoo! 的开发者们总能一次又一次的带给我们惊喜,这次是 Yahoo! Query Language 雅虎查询语言(YQL)是由雅虎提供的一种类 SQL 语法,借助雅虎强大的云计算能力 YQL 仅使用一行或者几行代码就能够轻松的进行跨域跨服务的查询和过滤以获取内容和数据,而且速度也绝对让开发者满意。
举个例子是我可以用诸如(select * from flickr.photos.search where text=”apple” limit 9)的语句得到 flickr 上关于 apple 的 9 条数据,返回结果为 XML 或 JSON 而引用方法只是将以上语句做为参数即 URL 的一部分直接向 YQL 请求即可,当然看似与 xQuery GQL SimpleDB 等查询类似却潜力无限,试想既然可以拓展到跨域及跨服务,那么无论你需要地图支持、搜索支持、图片支持、天气甚至股票等等将均可以从 YQL 获取而不需要自己去学习一套又一套的私有接口,雅虎 YQL 为我们获取数据和内容提供了一个“以不变应万变”的中间层……
雅虎 YQL 模型
YQL:http://developer.yahoo.com/yql/
YQL Guide:http://developer.yahoo.com/yql/guide/
YQL Console:http://developer.yahoo.com/yql/console/
以上是雅虎 YQL 的模型及项目网站及手册和调试地址,随着 Web 2.0 服务的越来越多,各个网站所提供的开放 API 也越来越多,开发者如果需要借助这些 API 进行开发就必须重新学习及掌握这些 API 需要地图服务就得看看地图的 API 文档需要搜索支持就又得去学习搜索的 API 等学会了 Google 的又发现需要 Twitter 的,而雅虎 YQL 就为我们提供了解决这样一个问题的中间层,这对于开发人员特别是前端开发人员将意义重大,下面是来自阿里 UED 博客上的一个简单示例:
由于篇幅我隐掉了查询语句中的 where 和 limit 部分以帮助大家简单理解 YQL 的一种用法,在新版的 YUI 3.2 中已经加入了 YQL 的组件可以通过 YUI().use(‘yql’, function(){}); 来直接进行调用,可以看得出来使用还是非常方便的,另外你甚至可以向 YQL 提供你自己的数据产品以拓展 YQL 的能力,一旦被 YQL 接纳,那么你的数据将会为千万开发者所用。
再举一个简单的例子:比如我想抓取某个网页的主要内容部分,很多人会采用正则按照特定的规则来摘取页面的 html 代码,但我是个极其喜欢偷懒的人,我希望直接抓出其在自己的 feed 里面的主要内容,通常在 feed content 里的内容都是某个页面的主要内容如下:
SELECT * FROM feed
WHERE url IN (
SELECT href FROM html
WHERE url="http://nan.im/blog/1313"
AND xpath="//link[@type='application/rss+xml']" LIMIT 1
)
AND link = "http://nan.im/blog/1313"
(查看运行结果)
我用了一个子 SELECT 来获取这个页面的 feed 地址,有点绕性能也不好但无所谓交给 Yahoo! 处理就好,因为在 YQL FEED 表里 url 是唯一的必选参数,所以我得先知道当前页面的 feed 地址是什麽然后再用地址去筛选一下获得页面的 content 还是相当方便的!
雅虎 YQL 查询语言通过提供类 SQL 语法消除了开发人员学习大量 API 的麻烦,节约了开发时间和学习成本,依托雅虎 YQL 的稳定和高效,使更多的开发者拥有无比强大的数据获取及计算能力,这将帮助我们更方便快捷高效的创造更多更好的互联网产品……
拓展阅读:阿里 UED 关于 YQL 介绍
一直在关注这些大公司的技术应用,感觉学不过来!
这可以非常好提高速度!