twitter、饭否、唧歪等web2.0网站提供API的原理 - 阿南的有趣吧 - CSD...

来源:百度文库 编辑:神马文学网 时间:2024/04/29 21:41:23
 twitter、饭否、唧歪等web2.0网站提供API的原理    
国内twitter的模仿者,饭否、叽歪、爱唠叨等都在网站下面提供了API接口
互联网上的api做的最早最好的当推facebook,已经成为一个产业,很多公司在靠facebook的api过活
API全称application program interface,主要指windows开发应用程序会经常用到微软提供的api
但是现在web的流行,web技术被深度的挖掘,渗透到各个领域
那么重视技术的互联网公司,也是有野心、有创意的公司,开始开发以自己的互联网产品为基础的api
然后公布api
从而希望互联网产品使用者中的优势人群基于api开发出应用,进而达到推广核心互联网产品的目的
技术层面:
api本身实际上是web应用系统的一个模块
不管web应用系统是基于asp、php、java、asp.net、python、ruby on rails等哪一个语言
所谓的api就是其中的一个web模块,对应为.asp,.php,.jsp(或者sevlet),.aspx(或者.asmx即webservice)、.py、.rb
中的一个函数
区别是
1.这个函数是暴露的,是可以跨域调用的,地址是公开的
2.函数的返回结果不是html流,而是json(http://en.wikipedia.org/wiki/Json)、xml(http://en.wikipedia.org/wiki/XML)、rss(http://en.wikipedia.org/wiki/RSS)、atom(http://en.wikipedia.org/wiki/Atom_%28standard%29)等数据
所以api与webservice还是有差别
web应用中的api分两种
1.直接调用
2.需要验证(下一篇博客介绍)
以Ruby on Rails举例给一个有趣吧网站的api
首先是一个controller中的action
def msn_rss
@msn=@params[:msn]
...
@comic=..
...
render :layout => false
end
下面是对应的msn_rss.rxml
xml.instruct! :xml, :version=>"1.0"
xml.rss(:version => '2.0') do
xml.channel do
if @user!=nil
xml.title(@user.nickname)
xml.link("http://www.youqubar.com/user/show/" + @user.id.to_s)
if @comic!=nil
xml.item do
xml.id(@comic.id)
xml.title(@comic.user.nickname+ my_distance_of_time_in_words(Time.now,@comic.created_at) +"创作趣图:"+@comic.title)
xml.link("http://www.youqubar.com/gallery/view_image/"+@comic.id.to_s)
end
end
end
end
end
这样一个公开的api产生了,我们可以这样调用:
http://www.youqubar.com/api/msn_rss?msn=funytest200701@hotmail.com
产生一个rss数据
这个api的功能是 传入有趣吧某一用户的msn帐号 返回需要主动推送给他的有趣吧新消息rss数据