2
我正在嘗試向發送圖像和其他數據的API發送請求,並獲取響應。這是我的代碼:Rails - 使用法拉第發送圖像
file = "assets/images/test.jpg"
conn = Faraday.new(:url => "api_url") do |faraday|
faraday.request :multipart
end
payload = { :profile_pic => Faraday::UploadIO.new(file, 'image/jpeg') }
conn.post "/test", payload
我的第一個問題是,我總是收到以下錯誤:
Errno::ENOENT (No such file or directory - assets/images/test.png)
我已經嘗試了所有的路徑,我能想象。哪裏應該將圖像保存在法拉第找到的目錄中?
第二個問題是關於響應,我如何得到響應並處理它?
第三個是,我還沒有明白的最後一次通話的第一個參數的效用:
conn.post "/hello", payload
我已經寫了「/你好」,但沒有任何想法什麼是真正的用法。
而最後一個。我可以發送保存在變量中的原始圖像,而不是發送路徑給Faraday嗎?
編輯
現在,它的工作,這是解決方案: 注意,url必須只有等到.com
,該路徑的其餘部分必須繼續conn.post
這樣的例子/v1/search
。 c.adapter :net_http
也是需要的。 消息響應在json變量中正確處理。
解決方案:
url = 'http://url.com'
file = Rails.root.to_s + "/app/assets/images/test.jpg"
conn = Faraday.new(:url => url) do |c|
c.request :multipart
c.adapter :net_http
end
payload = { :image => Faraday::UploadIO.new(file, 'image/jpeg'), :token => token}
response = conn.post '/v1/search', payload
json = JSON.parse response.body
其實正確的答案是'文件= Rails.root.to_s +「/app/assets/images/test.jpg」' 但它已經幫我找到它。 關於其他點?任何想法? – user1573607
@ user1573607我更新了我的答案。 (我不知道第二個問題的答案,也許你應該在conn.post調用後打印payload [:profile_pic],並看看你得到了什麼?) – Pol0nium