Joe*_*oel 4 json ruby-on-rails 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
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试处理一个案例,任何网址的响应代码都不正常,我想用错误消息"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
Run Code Online (Sandbox Code Playgroud)
但是如果来自网址的响应不是200,我收到错误消息"406不可接受"而不是"错误"
提前致谢
RestClient::Request 收到错误响应时会引发异常(响应代码不是2xx/3xx):
- 对于200到207之间的结果代码,将返回RestClient :: Response
- 对于结果代码301,302或307,如果请求是GET或HEAD,则将遵循重定向
- 对于结果代码303,将遵循重定向并将请求转换为GET
- 对于其他情况,将引发一个包含Response的RestClient :: Exception; 将针对已知错误代码抛出特定的异常类
- 在异常上调用.response以获取服务器的响应
您应该处理该异常:
def get url
result = RestClient::Request.execute(method: :get, url: url)
JSON.parse(result)
rescue RestClient::Exception
"error" # no need to call 'as_json'
end
Run Code Online (Sandbox Code Playgroud)
有关Ruby异常处理的更多信息
| 归档时间: |
|
| 查看次数: |
3124 次 |
| 最近记录: |