RoR JSON.parse捕获错误

时间:2014-09-04 03:44:15

标签: ruby-on-rails json http-status-code-403

编写一个触及api(ETSY)的应用程序并带回一些JSON但有时我收到403错误,如果我收到错误,我想显示一个错误页面,但我不知道如何检查该错误并执行其他操作。

my_hash = JSON.parse(open("https://openapi.etsy.com/v2/listings/#{$productId}?api_key=XXXX&fields=title,url,price,description&includes=MainImage").read)

我已经看了一会儿,但却没有看到我正在寻找的东西。

2 个答案:

答案 0 :(得分:0)

每当遇到403错误时,您都可以使用开始救援块重定向用户

def index
  begin
    my_hash = JSON.parse(open("https://openapi.etsy.com/v2/listings/#{$productId}api_key=XXXX&fields=title,url,price,description&includes=MainImage").read)
  rescue
    redirect_to error_path
  end

这有点快速和肮脏,但我认为它可以完成工作。 这篇文章也可能有所帮助。 http://www.mattjohnston.co/blog/2013/10/18/responding-with-errors-in-rails/

答案 1 :(得分:0)

我认为您需要检查您的api响应,如果响应是404然后呈现错误页面。可能是这样的。要从api获得响应,您需要使用第三方(restclient或httpparty)。

def index
  response = RestClient get "https://openapi.etsy.com/v2/listings/#{$productId}api_key=XXXX&fields=title,url,price,description&includes=MainImage"

  unless response.code == 404
   result_hash = JSON.parse(response.body)
   // do something 
  else
   // redirect to error page here
  end 
end

供参考,请阅读restclient文档here