寻找具有错误检查的法拉第中间件示例

use*_*728 7 ruby middleware ruby-on-rails faraday

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

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

谢谢

Pet*_*ter 32

法拉第默认处理中间件时出错:

faraday.use Faraday::Response::RaiseError
Run Code Online (Sandbox Code Playgroud)

例如:

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)
Run Code Online (Sandbox Code Playgroud)

如果你想编写自己的中间件来处理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)
Run Code Online (Sandbox Code Playgroud)

对于您的代码,您可能希望将其放在单独的文件中,需要它,模块化它等.

如果你想看一个好的实例,新的Instagram gem有一个非常好的设置来引发自定义错误:GitHub链接