Twitter以及一些API
盡管早期的網絡涉及的是人-機器的交互,但現在的網絡已涉及機器-機器之間的交互,這種交互是使用web服務來支持的。大部分受歡迎的網站都有這樣的服務存在——從各種各樣的Google服務到LinkedIn、Facebook和Twitter等。通過web服務創建的API,外部的應用可以查詢或是操縱網站上的內容。
web服務可以使用多種方式來實現。目前最流行的做法之一是表述性狀態轉移(Representational State Transfe, REST)。REST的一種實現是通過為人熟知的HTTP協議,允許HTTP作為RESTful架構的媒介存在(使用諸如GET、PUT、POST、DELETE一類的標準HTTP操作)。Twitter的API是作為這一媒介之上的一個抽象來進行開發的。在這一做法中,沒有涉及REST、HTTP或是XML或JSON一類的數據格式的知識,而是代之以清晰地整合到了Ruby語言中的基于對象的接口。
Ruby和Twitter的一個快速展示
讓我們來探討一下如何在Ruby中使用Twitter API。首先,我們需要獲取所需的資源,如果你像我一樣在用Ubuntu Linux®的話,就使用apt框架。
若要獲取最新的完整的Ruby分發版本(大約13MB的下載量),使用這一命令行:
$ sudo apt-get install ruby1.9.1-full
接著使用gem實用程序來抓取Twitter gem:
$ sudo gem install twitter
現在你已經有了這一步驟所需的一切了,我們繼續,測試一下Twitter的包裝器。這一示例使用一個名為交互式的Ruby外殼(Interactive Ruby Shell,IRB)的外殼程序,該外殼程序允許實時地執行Ruby命令以及使用語言進行實驗。IRB有著非常多的功能,不過我們只用它來做一些簡單的實驗。
清單1展示了與IRB的一個會話,該會話被分成了三段以便于閱讀。第一段(001和002行)通過導入必需的運行時元素來做好環境方面的準備(require方法加載并執行指定的庫)。接下來的一段(003行)說明的是使用Twitter gem來顯示從IBM® developerWorks®發出的最新tweet消息。如所展示的那樣,使用Client::Timeline模塊的user_timeline方法來顯示一條消息,這第一個例子說明了Ruby的“鏈方法”的功能。user_timeline方法返回一個有著20條消息的數組,接著鏈入到方法first中,這樣做是為了從數組中提取出第一條消息(first是Array類的一個方法),接著從這一條消息中提取出文本字段,通過puts方法把它放到輸出中。
接下來的一段(004行)使用了用戶定義的位置字段,這是一個不限形式的字段,用戶可以在其中提供有用的或是無用的位置信息。在這一例子中,User模塊抓取了位置字段所限定的用戶信息。
最后一段(從005行開始)研究了Twitter::Search模塊,這一搜索模塊提供了極其豐富的用來搜索Twitter的接口。在這一例子中,首先是創建一個搜索實例(005行),接著在006行指定一個搜索,搜 LulzSec用戶在最近發出的包含了why這一詞的消息,結果列表已經過刪減和編輯。搜索設置會一直存在在那里,因為搜索實例保持著所定義的過濾條件,你可以通過執行search.clear來清除這些過濾條件。
新聞熱點
疑難解答