分享

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

 古罗 2007-09-22

国内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./wiki/Json)、xml(http://en./wiki/XML)、rss(http://en./wiki/RSS)、atom(http://en./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./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./gallery/view_image/"+@comic.id.to_s)
                end
            end
    end        
    end
end
这样一个公开的api产生了,我们可以这样调用:
http://www./api/msn_rss?msn=funytest200701@hotmail.com
产生一个rss数据
这个api的功能是 传入有趣吧某一用户的msn账号 返回需要主动推送给他的有趣吧新消息rss数据

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多