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) +"創作趣圖:"[email protected])
                    xml.link("http://www.youqubar.com/gallery/view_image/"[email protected]_s)
                end
            end
    end        
    end
end
這樣一個公開的api產生了,我們可以這樣調用:
http://www.youqubar.com/api/[email protected]
產生一個rss數據
這個api的功能是 傳入有趣吧某一用戶的msn帳號 返回需要主動推送給他的有趣吧新消息rss數據
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章