我正在使用Rails gem使用RestClient向api发送请求我需要挽救401错误代码我在restclient文档中看到了以下内容:

> RestClient.get('http://my-rest-service.com/resource'){ |response,
> request, result, &block|   case response.code   when 200
>     p "It worked !"
>     response   when 423
>     raise SomeCustomExceptionIfYouWant   else
>     response.return!(request, result, &block)   end }

我试图实现类似的case语句:
case response.code
 when 200
  JSON.parse(response.body)
 when 401
  raise AuthenicationError, "Unauthorized"
 else
  raise RestClient::ExceptionWithResponse
end

它捕获200箱罚款,但忽略401箱,并直接转到其他有什么建议可以对通过restclient返回的响应提出401的异常吗?

最佳答案

我不能告诉你,为什么我相信其余的客户回购可以告诉你:)但是使用RestClient::Request.new然后用一个块执行api调用对我有效。
我认为这可能与RestClient内置了异常这一事实有关。

request = RestClient::Request.new(
    method: :get,
    url: 'https://my-rest-service.com/resource.json')
response = request.execute {|response| response}
case response.code
  when 200
    puts "Good"
  when 401
    puts "Bad"
    raise Exception
end

关于ruby-on-rails - 需要使用RestClient抢救401状态代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40410228/

10-09 22:27