📜  从 ruby 调用 api (1)

📅  最后修改于: 2023-12-03 15:06:32.399000             🧑  作者: Mango

从 Ruby 调用 API

在现代 web 开发中,经常需要通过调用 API 来实现数据的交换。Ruby 作为一门流行的编程语言,有很多途径可以用来调用 API。在本文中,我们将介绍一些常见的方式和工具,以及如何使用它们来调用 API。

使用 Ruby 自带的 Net::HTTP 库来调用 API

在 Ruby 标准库中,有一个名为 Net::HTTP 的库,它提供了与 HTTP 协议的交互功能,可以用来调用 API。以下是一个使用 Net::HTTP 调用 API 的示例:

require 'net/http'

url = URI.parse('https://api.example.com/users')
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = (url.scheme == "https")
request = Net::HTTP::Get.new(url.request_uri)
response = http.request(request)
puts response.body

代码解释:

  1. require 'net/http' 引入 Net::HTTP 库。

  2. url = URI.parse('https://api.example.com/users') 定义 API 地址。

  3. http = Net::HTTP.new(url.host, url.port) 新建 Net::HTTP 实例并设置请求 host 和 port。

  4. http.use_ssl = (url.scheme == "https") 如果 API 使用 HTTPS 协议,则开启 SSL。

  5. request = Net::HTTP::Get.new(url.request_uri) 新建一个 GET 请求。

  6. response = http.request(request) 发送请求并获取响应。

  7. puts response.body 输出响应体。

使用 Net::HTTP 调用 API 的好处是它的标准库自带,无需额外安装和配置依赖库。

使用 Faraday 库来调用 API

Faraday 是一个常用的 HTTP 客户端库,可以用来与 API 交互。它支持多种 HTTP 库(如 Net::HTTP、HTTParty、Typhoeus 等)作为底层传输,并提供了统一的 API,可以方便地在这些库之间切换。以下是一个使用 Faraday 调用 API 的示例:

require 'faraday'

conn = Faraday.new(url: 'https://api.example.com') do |faraday|
  faraday.request  :url_encoded
  faraday.response :logger
  faraday.adapter  Faraday.default_adapter
end

response = conn.get '/users'
puts response.body

代码解释:

  1. require 'faraday' 引入 Faraday 库。

  2. conn = Faraday.new(url: 'https://api.example.com') 新建 Faraday 实例,并设置 API 地址。

  3. faraday.request :url_encoded 对请求参数进行 URL 编码。

  4. faraday.response :logger 日志输出,方便调试。

  5. faraday.adapter Faraday.default_adapter 默认使用 Net::HTTP 库作为底层传输。

  6. response = conn.get '/users' 发送 GET 请求。

  7. puts response.body 输出响应体。

使用 Faraday 可以方便地切换 HTTP 库,并且提供了丰富的拦截器和插件。

使用 RestClient 库来调用 API

RestClient 是另一个常用的 HTTP 客户端库,可以用来与 API 交互。它提供了简单的 API,可以方便地进行 GET、POST、PUT、DELETE 等请求。以下是一个使用 RestClient 调用 API 的示例:

require 'rest-client'

response = RestClient.get 'https://api.example.com/users'
puts response.body

代码解释:

  1. require 'rest-client' 引入 RestClient 库。

  2. response = RestClient.get 'https://api.example.com/users' 发送 GET 请求,并获取响应。

  3. puts response.body 输出响应体。

RestClient 提供了简单的 API,易于上手和使用。

总结

本文介绍了三种常用的方式和工具来调用 API:使用 Ruby 自带的 Net::HTTP 库、使用 Faraday 库和使用 RestClient 库。它们都有各自的优缺点,可以根据具体情况选择最适合自己的方式和工具来调用 API。