Я пытаюсь сделать запрос к API, отправляя изображение и некоторые другие данные и получая ответ. Это мой код:
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
Я написал «/hello», но понятия не имею, каково его реальное использование.
И последний. Могу ли я отправить необработанное изображение, сохраненное в переменной, вместо отправки пути к Фарадею?
ИЗМЕНИТЬ
Теперь это работает, вот решение: имейте в виду, что 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