【问题标题】:Looking for Example of Faraday Middleware with Error checking寻找带有错误检查的法拉第中间件示例
【发布时间】:2013-12-30 17:47:12
【问题描述】:

我正在寻找一个法拉第中间件的例子,它可以处理请求中的 http(状态码)错误以及网络超时。

在阅读了 Faraday 及其中间件的文档后,我了解到这是中间件的用例之一……我只是不知道实现应该是什么样子。

谢谢

【问题讨论】:

  • 你能接受我的回答吗? :)
  • 彼得的回答似乎正是您所需要的。如果是这样,请接受答案。无论如何,+1,谢谢。

标签: ruby-on-rails ruby middleware faraday


【解决方案1】:

Faraday 默认有一个错误处理中间件:

faraday.use Faraday::Response::RaiseError

例如:

require 'faraday'

conn = Faraday.new('https://github.com/') do |c|
  c.use Faraday::Response::RaiseError
  c.use Faraday::Adapter::NetHttp
end

response = conn.get '/cant-find-me' 
#=> gems/faraday-0.8.8/lib/faraday/response/raise_error.rb:6:in `on_complete': the server responded with status 404 (Faraday::Error::ResourceNotFound)

如果您想编写自己的中间件来处理 HTTP 状态码响应,这里有一个基本示例:

require 'faraday'

class CustomErrors < Faraday::Response::Middleware
  def on_complete(env)
    case env[:status]
    when 404
      raise RuntimeError, 'Custom 404 response'
    end
  end
end

conn = Faraday.new('https://github.com/') do |c|
  c.use CustomErrors
  c.use Faraday::Adapter::NetHttp
end

response = conn.get '/cant-find-me' #=> `on_complete': Custom 404 response (RuntimeError)

对于您的代码,您可能希望将其放在一个单独的文件中、需要它、对其进行模块化等。

如果您想看到一个好的现场示例,新的 Instagram gem 有一个很好的设置来引发自定义错误:GitHub link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-19
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 2023-01-18
    • 2014-12-16
    相关资源
    最近更新 更多