2017-09-23 111 views
0

請幫我: 我有一些應用程序和相關記錄。Ruby RestClient GET請求與負載

app with id 1 has: record1, record2 and record3. 
app with id 2 has: record1 ... record1000 

要使用捲曲濾除記錄應用1林。我可以記錄使用以下命令:

curl -i -H "accept: application/json" -H "Content-type: application/json" -X GET -d '{ "filters": { "app_id":"1" }}' http://[rails_host]/v1/records?token=[api_token] 

我該怎麼辦相同,但與紅寶石RESTClient實現(寶石的休息客戶端'「1.7.2」)

爲了讓我做的所有記錄以下:

RestClient.get("http://[rails_host]/v1/records?token=[api_token]", { :content_type => 'application/json', :accept => 'application/json'}) 

的問題是,應用ID不返回,所以我不能解析響應,並採取有應用程序ID記錄= 1

任何想法如何,我可以添加有效載荷Restclient.get到Fi刪除記錄?

+0

使用機身搭配得到的是一個糟糕的設計。從技術上講,你可以做到這一點,但要符合規範,GET的主體不應該影響響應(所以同樣的響應應該回來,不管身體)。此外,許多人(也就是實現)假定GET請求不能有一個重要的主體,所以很多實現都不允許你發送主體。基本上:不要在GET請求/使用請求主體中的數據的情況下構建API。 – Joe

+0

不幸的是,我沒有建立一個應用程序。目前,我正在使用現有功能,並嘗試使用現有功能創建持續集成解決方案。謝謝 – Andriy

回答

1

您可以在文檔中看到here,唯一的高層助手接受有效載荷的說法是POST,PATCH和PUT。要使用有效載荷進行GET請求,你將需要使用RestClient::Request.execute

這看起來像:

RestClient::Request.execute(
    method: :get, 
    url:  "http://[rails_host]/v1/records?token=[api_token]", 
    payload: '{ "filters": { "app_id":"1" } }', 
    headers: { content_type: 'application/json', accept: 'application/json'} 
) 
+1

真棒!按預期工作。謝謝 – Andriy

-1

你可以嘗試用JSON發送數據嗎?

data = { param1: 'one', nested: { param2: 'two' }}.to_json 
headers = { content_type: :json, accept: :json } 

RestClient.get("http://#{rails_host}/v1/records?token=#{api_token}", data, headers)