Faraday 使用教程:从安装到发起第一个请求

Faraday 是 Ruby 中用来发 HTTP 请求的库,适合在脚本、Rails 项目或后台服务里调用第三方 API。
这篇教程从安装开始,逐步写出 GET、POST 请求,并说明连接配置和常见报错的处理方式。

安装 Faraday 与项目准备

先确认本机 Ruby 和 Bundler 可用:

ruby -v
bundle -v

新建目录并初始化:

mkdir faraday-demo && cd faraday-demo
bundle init

打开 Gemfile,加入 Faraday:

source "https://rubygems.org"
gem "faraday"

安装依赖:

bundle install

如果不想用 Bundler,也可以直接执行 gem install faraday。
安装完成后,在 ruby -e 'require "faraday"; puts Faraday::VERSION' 中能看到版本号,说明环境就绪。

发起第一个 GET 请求

新建 get_demo.rb:

require "faraday"

conn = Faraday.new(url: "https://httpbin.org") do |f|
  f.options.timeout = 10
  f.options.open_timeout = 5
end

response = conn.get("/get", { foo: "bar" })
puts response.status
puts response.body

运行 ruby get_demo.rb。
如果返回 200 并看到包含 "foo": "bar" 的 JSON,说明请求成功。Faraday.new 里的 url 是基础地址,后续 get 传入的路径会拼接到它后面。

用 POST 提交数据并处理响应

Faraday 的 POST 有两种常见写法:表单提交和 JSON 提交。

表单提交:

response = conn.post("/post", { name: "test", age: "20" })

JSON 提交需要手动设置请求头:

response = conn.post("/post") do |req|
  req.headers["Content-Type"] = "application/json"
  req.body = { name: "test", age: 20 }.to_json
end

拿到响应后,先看 response.status 判断状态码,再用 response.body 读取内容。
如果接口返回 JSON,可以用 JSON.parse(response.body) 转成 Ruby 哈希。

连接、超时与错误处理

实际调用外部 API 时,网络抖动和超时很常见。
建议在创建连接时显式设置超时:

conn = Faraday.new(url: "https://httpbin.org") do |f|
  f.options.timeout = 15
  f.options.open_timeout = 5
end

open_timeout 控制建立连接的时间,timeout 控制读取响应的时间。
捕获异常可以避免脚本直接崩溃:

begin
  response = conn.get("/delay/20")
rescue Faraday::TimeoutError => e
  puts "请求超时: #{e.message}"
rescue Faraday::ConnectionFailed => e
  puts "连接失败: #{e.message}"
end

常见报错排查方向:

  • Faraday::ConnectionFailed:检查域名解析、网络连通性和端口是否开放。
  • Faraday::TimeoutError:适当增大 timeout,或检查目标服务是否响应过慢。
  • SSL_connect 相关错误:确认系统 CA 证书是否完整,不要随意关闭 SSL 验证。
  • 返回 404 或 401:核对请求路径、请求头和认证信息。

验证请求是否真正成功

不要只看程序有没有报错。
建议在脚本里同时打印状态码和关键字段:

puts "status=#{response.status}"
puts "content-type=#{response.headers['content-type']}"
puts "body=#{response.body[0, 200]}"

如果状态码是 2xx,并且 body 包含预期数据,才算调用成功。
对生产脚本,还可以把状态码和耗时写入日志,方便后续排查。

几个容易踩的坑

  • 基础地址末尾是否带 / 会影响路径拼接,建议统一写成不带末尾斜杠的形式。
  • 默认不会自动解析 JSON,需要自己调用 JSON.parse。
  • 发送 JSON 时忘记设置 Content-Type,服务端可能按表单解析导致参数为空。
  • 不要在循环里反复 Faraday.new,复用连接对象可以减少握手开销。

Faraday 本身不绑定具体 HTTP 适配器,默认使用 Ruby 标准库。
如果需要更高并发或连接池,可以再引入 faraday-net_http_persistent 等适配器,但普通脚本场景下默认配置已经够用。

分享到:
上一篇
Oobabooga 本地大模型部署:安装、模型加载与对话验证
下一篇
Msty 使用教程:连接本地模型与云端 API 的配置方法
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意