首页 > 解决方案 > Rails 使用 httparty 将 JSON 解析为外部 URL

问题描述

在 Rails 应用程序中,必须将用户重定向到外部站点以进行外部处理。控制器生成一个有效的 JSON 字符串和一组标头:

@result = HTTParty.post(
  "https://some-test.supertester.com/checkout",
  :verify => false, 
  :body => JSON.parse(@payment).to_json,
  headers: {
    'Content-Type' => 'application/json', 
    'X-TimeStamp' => "#{Time.now.to_i}",
    'X-API-ID:' => "#{@api_id}",
    'X-API-Signature:' => "#{@api_signature}"
  },
  timeout: 20
)    

此操作由用户通过以下方式启动:

<%= link_to t('proceed'), data_url_cart_path(id: @existing_cart.id), class: 'button' %>

其控制器操作生成上述 JSON 字符串并调用。

然而,Rails 会尝试使用具有相同操作名称的视图来响应此操作(甚至使用 生成空白format.json { head :no_content }),当目标是将用户重定向到具有定义的标头和有效负载的上述 URL 时。

如何做到这一点?

标签: ruby-on-railshttparty

解决方案


HTTParty正在使用有效负载发出网络请求json。在这种情况下@response将得到来自网络请求的响应。如果您打电话puts @response.parsed_response.inspect,您将在运行 Rails 服务器的终端窗口中看到json返回的响应。

我认为您可能根本不需要将用户重定向到外部站点,而是检查响应以查看您尝试执行的操作是否成功并在您自己的应用程序中处理它。


推荐阅读