2013-07-01 39 views
0

我想要通過Ruby訪問Kippt API,而不需要使用任何外部庫,即所有與Ruby打包在一起的是好的,但沒有其他(標準庫除外)。如何在沒有外部庫的情況下通過Ruby訪問Kippt API?

我應該怎麼做呢?請詳細說明過程。

+0

你能澄清「沒有任何圖書館的用法」嗎?從字面上看,這需要從頭開始實施低級TCP/IP,HTTP,JSON序列化。這似乎適得其反,你至少可以提供一些你認爲這是必要的背景,以及你已經嘗試過了嗎? –

+0

這個編輯是否有點澄清這個問題? –

+0

是的,所以Ruby核心顯然是好的。標準庫是什麼? http://www.ruby-doc.org/stdlib-1.9.3/libdoc/json/rdoc/index.html - 重要的,因爲它是你會發現基本的JSON和HTTP支持的地方。 –

回答

1

這是很基本的訪問,顯示它是可能的:

require "net/https" 
require "uri" 

uri = URI.parse('https://kippt.com/api/users/1/') 
http = Net::HTTP.new(uri.host, uri.port) 
http.use_ssl = true 
http.verify_mode = OpenSSL::SSL::VERIFY_NONE 

request = Net::HTTP::Get.new(uri.request_uri) 

response = http.request(request) 

data = JSON.parse(response.body) 

=> { 
    "username"=>"jorilallo", 
    "bio"=>"Co-founder of Kippt. I love building products.", 
    "app_url"=>"/jorilallo", 
    "avatar_url"=>"https://d19weqihs4yh5u.cloudfront.net/avatars/147d86b9-0830-49d8-a449-0421a6a4bf05/160x160", 
    "twitter"=>"jorilallo", 
    "id"=>1, "github"=>"jorde", 
    "website_url"=>"http://about.me/jorilallo", 
    "full_name"=>"Jori Lallo", 
    "dribbble"=>"jorilallo", 
    "counts"=>{"follows"=>1192, "followed_by"=>23628}, 
    "is_pro"=>true, "resource_uri"=>"/api/users/1/" 
} 

有藉此論證,並把它變成與認證科佩斯,張貼PARAMS一些可重用的代碼中有相當數量的工作,爲基於HTTP的API請求失敗和其他標準問題。

我建議閱讀http://www.rubyinside.com/nethttp-cheat-sheet-2940.html瞭解如何構建和處理請求的更多細節。這就是我如何做到的(直到寫出答案,我從來沒有直接使用過Ruby的net/http,而是從該網站抓取了可能看起來很像的代碼塊)。

相關問題