我正在寻找一个法拉第中间件的例子,它可以处理请求中的 http(状态码)错误以及额外的网络超时。
在阅读了 Faraday 的文档和它的中间件之后,我的理解是这是中间件的用例之一……我只是不知道实现应该是什么样子。
谢谢
我正在寻找一个法拉第中间件的例子,它可以处理请求中的 http(状态码)错误以及额外的网络超时。
在阅读了 Faraday 的文档和它的中间件之后,我的理解是这是中间件的用例之一……我只是不知道实现应该是什么样子。
谢谢
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 链接