当前位置: 首页 > 知识库问答 >
问题:

如何用Ruby REST客户端处理异常

蔡修远
2023-03-14

我最近从Ruby的Net:HTTP类切换到rest-client 1.6.7。

def get_member_using_card
  resource = "#{@settings_app_uri}api/v1/card/#{self.member_card_num}?token=#{@settings.api_key}"
  response = RestClient.get resource
  if response.code == 200 
    card = JSON.parse(response.body)
    self.customer_id = card['card']['customer_id']
  else
    return 0
  end
end
RestClient::ResourceNotFound - 404 Resource Not Found:
        /Users/tim/.rvm/gems/ruby-1.9.2-p290/gems/rest-client-1.6.7/lib/restclient/abstr
act_response.rb:48:in `return!'
        /Users/tim/.rvm/gems/ruby-1.9.2-p290/gems/rest-client-1.6.7/lib/restclient/reque
st.rb:230:in `process_result'
        /Users/tim/.rvm/gems/ruby-1.9.2-p290/gems/rest-client-1.6.7/lib/restclient/reque
st.rb:178:in `block in transmit'
        /Users/tim/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/http.rb:627:in `start'
        /Users/tim/.rvm/gems/ruby-1.9.2-p290/gems/rest-client-1.6.7/lib/restclient/reque
st.rb:172:in `transmit'
        /Users/tim/.rvm/gems/ruby-1.9.2-p290/gems/rest-client-1.6.7/lib/restclient/reque
st.rb:64:in `execute'
        /Users/tim/.rvm/gems/ruby-1.9.2-p290/gems/rest-client-1.6.7/lib/restclient/reque
st.rb:33:in `execute'
        /Users/tim/.rvm/gems/ruby-1.9.2-p290/gems/rest-client-1.6.7/lib/restclient.rb:68
:in `get'

共有1个答案

酆奇文
2023-03-14

参见http://rubydoc.info/gems/rest-client/上的异常标题

  • 对于介于200和207之间的结果代码,将返回RESTClient::Response
  • 对于结果代码301、302或307,如果请求是get或head
  • 对于结果代码303,将遵循重定向并将请求转换为get
  • 对于其他情况,将引发包含响应的RESTClient::异常,并为已知错误代码引发特定的异常类
RestClient.get 'http://example.com/resource'
➔ RestClient::ResourceNotFound: RestClient::ResourceNotFound`

begin
  RestClient.get 'http://example.com/resource'
rescue => e
  e.response
end
➔ 404 Resource Not Found | text/html 282 bytes
 类似资料:
  • 我有一个使用RESTEasy的简单客户端,如下所示: 服务器配置为在以及一条有用的信息。正在抛出一个。除了包装在中之外,我如何使捕获异常并以字符串形式返回响应的有用消息。我尝试了各种实现,但似乎都是正确的。上述代码从未调用。我错过了什么? 我目前的解决方法是使用,然后执行并将原始状态填充到响应实体中。这样我就避免了异常抛出。

  • 那么如何提取错误代码呢?我想提取错误代码并构建一个responseEntity 我得到了这段代码,但不知道如何在函数中使用。

  • 我使用Apache Ignite 2.7.5作为.NET核心中服务器和瘦客户机。当我做与缓存相关的操作时,put、get和load等.net核心应用程序会自动崩溃。 因此,我想处理for循环内部的异常,例如、、等,然后从catch块抛出for循环,否则如果只有异常块,则继续循环迭代。

  • 我正在尝试处理下游服务抛出的异常并捕获错误代码以及错误响应消息。在网上搜索了一些解决方案后,我看到了下面处理异常的常用方法,但我真的不确定我必须在我的MyCustomConnectionException中写些什么?顺便说一下,当我使用Resttemplate时,我可以通过抛出HttpClientResponseException来轻松地处理并捕获所有内容,但我真的不知道这是如何工作的?我是使用W

  • 我对netty比较陌生,不确定自己做的事情是否正确。我会尽量短一点。如果有任何不清楚的地方,请询问更多信息。 因此,我有一个提供HTTP请求的netty服务器,其中的内容应该是序列化为Json字符串的protobuf消息。 通道管道如下所示: 前两个通道处理程序是标准的netty工具, HttpProtobufServerCodec类似于: 和HttpToProtobufDecoder类似于: 因

  • 请给我一些关于任务解决方案的最佳模式的建议。我的任务是: 用户通过自己的rest控制器向Camunda处理器发出请求 后端端的BPMN架构由多个异步服务链组成 只有当BPMN上的一个最终服务做出响应时,数据才准备好响应给用户。 每条链条的工作时间不超过10-15秒。并且用户的会话计数每小时少于500个。 rest管制员的工作如何组织?在同一调用中强制控制器等待结果是否可以接受?瓶颈在哪?