2013-10-04 96 views
0

在這裏,我想從不同的數據源導入數據庫,具有一定的API是這樣的:現在在rails 3控制器中使用curl?

curl -H X-Auth-Ticket:47827EC1B6871D... https://url/10482/ApiGetDeepData | gzip -d >result.json 

,該命令將導出捲曲結果爲JSON文件,我需要一種方法來那些JSON數據導入到我導軌3數據庫。爲此我需要幫助將json文件導入到我的rails 3數據庫中。我不知道

如果有人知道如何在控制器中編寫curl,我會非常感激。

任何想法如何解決這個問題?

回答

3

可以使用後使用httparty API調用,獲得等

response = HTTParty.post(
    "https://url/id/ApiGetDeepData", 
    headers: {"Auth-Ticket" => 47827EC1B6871D...} 
) 

通過這種方式,無需導出任何json文件,您將直接獲得json格式的響應,並且您可以導出任何您想要的值。

+0

此語法不再正確。它應該是「Auth-Ticket」=> 478 .... – FletchRichman

1

通常我們不會在軌道控制器中寫入捲曲。我使用RestClient這是一個簡單的Rest客戶端的Rails。

,並使用捲曲的方法是把命令裏面``

例子:

`curl http://somedomain/url` 
+0

非常感謝....我將通過這個鏈接... – przbadu

+0

將不勝感激接受應答或投票,如果它的工作原理。謝謝! –

+0

我在ruby中得到了system()函數,它也會在控制器中執行curl命令,但是我無法通過鍵訪問結果來獲取鍵的值,你能幫助我嗎? – przbadu

1

是的,使用HTTParty我們可以很容易地獲取api數據。

response = HTTParty.post("url_to_my_api", body: { signinEmail: ENV["EMAIL"], password: ENV["PASSWORD"] } 
) 

result = HTTParty.post(
    "url_to_my_api", 
    headers: {"Auth-Ticket" => response["ticket"]} 
) 

這真的對我有幫助。

編輯: 糾正語法