Rails пересылает ответ как есть от внешнего API - PullRequest
0 голосов
/ 05 апреля 2020

Я выполняю вызов внешнего API в моей функции контроллера.

# {root}/some/route
def my_action
  # call to external API
  resp = my_call_to_external_api
end

Этот внешний вызов API возвращает ответ 200 и с телом.

Я хочу переслать это ответ как и ответ моего контроллера, когда кто-то попадает на маршрут {root} /some/route.

Мой ответ с текущей реализацией - это статус 204 без тела. Я проверил журналы и обнаружил, что это связано с тем, что нечего визуализировать для моего действия контроллера после успешного вызова внешнего API, следовательно, это рендеринг 204: no_content. Как бы мне убедиться, что мое действие контроллера просто перенаправляет ответ, который получен от внешнего API.

Я новичок в этом, поэтому любые советы будут оценены. Спасибо!

Ответы [ 2 ]

0 голосов
/ 10 апреля 2020

Что я сделал, чтобы решить эту проблему, отобразил статус, полученный из ответа, с телом, проанализированным из ответа.

render :ok, json: resp.read_body
0 голосов
/ 06 апреля 2020

Самый простой способ сделать это -

require 'uri'
require 'net/http'

url = URI(YOUR_URL)
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body

Это может решить вашу проблему.

...