gpt4 book ai didi

ruby-on-rails - 寻找具有错误检查功能的法拉第中间件示例

转载 作者:数据小太阳 更新时间:2023-10-29 06:55:20 27 4
gpt4 key购买 nike

我正在寻找 Faraday Middleware 的示例,它可以处理请求中的 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 link

关于ruby-on-rails - 寻找具有错误检查功能的法拉第中间件示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20844679/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com