如何在 ruby 的 http 请求中包含 header
how do I include a header in an http request in ruby
让下面的代码工作:
uri = URI.parse("http://www.ncdc.noaa.gov/cdo-web/api/v2/datasets/")
response = Net::HTTP.get_response(uri)
现在我还需要传递一个 header 其中包含此令牌哈希:
token: "fjhKJFSDHKJHjfgsdfdsljh"
我找不到有关如何执行此操作的任何文档。我该怎么做?
get_response
是一个 shorthand 用于发出请求,当您需要更多控制时 - 自己做一个完整的请求。
ruby 标准库中有一个示例 here:
uri = URI.parse("http://www.ncdc.noaa.gov/cdo-web/api/v2/datasets/")
req = Net::HTTP::Get.new(uri)
req['token'] = 'fjhKJFSDHKJHjfgsdfdsljh'
res = Net::HTTP.start(uri.hostname, uri.port) {|http|
http.request(req)
}
虽然您肯定可以使用 Net::HTTP
来实现这个目标,但 gem excon 可以让您更轻松地做到这一点:
require 'excon'
url = 'http://www.ncdc.noaa.gov/cdo-web/api/v2/datasets/'
Excon.get(url, headers: {token: 'fjhKJFSDHKJHjfgsdfdsljh'})
让下面的代码工作:
uri = URI.parse("http://www.ncdc.noaa.gov/cdo-web/api/v2/datasets/")
response = Net::HTTP.get_response(uri)
现在我还需要传递一个 header 其中包含此令牌哈希:
token: "fjhKJFSDHKJHjfgsdfdsljh"
我找不到有关如何执行此操作的任何文档。我该怎么做?
get_response
是一个 shorthand 用于发出请求,当您需要更多控制时 - 自己做一个完整的请求。
ruby 标准库中有一个示例 here:
uri = URI.parse("http://www.ncdc.noaa.gov/cdo-web/api/v2/datasets/")
req = Net::HTTP::Get.new(uri)
req['token'] = 'fjhKJFSDHKJHjfgsdfdsljh'
res = Net::HTTP.start(uri.hostname, uri.port) {|http|
http.request(req)
}
虽然您肯定可以使用 Net::HTTP
来实现这个目标,但 gem excon 可以让您更轻松地做到这一点:
require 'excon'
url = 'http://www.ncdc.noaa.gov/cdo-web/api/v2/datasets/'
Excon.get(url, headers: {token: 'fjhKJFSDHKJHjfgsdfdsljh'})