Ruby on rails休息客户端,处理错误响应

时间:2015-08-08 15:09:50

标签: ruby-on-rails json rest-client

我是红宝石的新手(也是编程方面的)

我已经构建了这段代码:

    #This method executing a url and give the response in json format
    def get url
      return JSON.parse(RestClient::Request.execute(method: :get, url: url))
    end

现在我正在尝试处理一个案例,即来自任何网址的响应代码都不正常,我想将其替换为错误消息“error”

我尝试用以下代码替换get方法:

def get url
 if ((RestClient::Request.execute(method: :get, url: url)).code == 200)
    return JSON.parse(RestClient::Request.execute(method: :get, url: url))
 else
  error = "error"
    return  error.as_json
 end
end

但是如果来自网址的响应不是200,我会收到错误消息“406不可接受”而不是“错误”

提前致谢

1 个答案:

答案 0 :(得分:6)

protected void Page_Load(object sender, EventArgs e) { if (!this.Page.User.Identity.IsAuthenticated) { FormsAuthentication.RedirectToLoginPage(); } } 收到错误响应时会引发异常(响应代码不是2xx / 3xx):

  
      
  • 对于200到207之间的结果代码,将返回RestClient :: Response
  •   
  • 对于结果代码301,302或307,如果请求是GET或HEAD,则将遵循重定向
  •   
  • 对于结果代码303,将遵循重定向并将请求转换为GET
  •   
  • 对于其他情况,将引发持有Response的RestClient :: Exception;将针对已知错误代码抛出特定的异常类
  •   
  • 调用.response来获取服务器响应的异常
  •   
     

Documentation

您应该处理该异常:

RestClient::Request

有关Ruby异常处理的更多信息:

Ruby Exceptions