将 Curl 翻译成 Ruby(New Relic API)
Translate Curl to Ruby (New Relic API)
我是 ruby 的新手,但我正在使用它。有人可以帮我将这个 curl 命令翻译成 Ruby 吗?
我一直在努力调整其他 ruby 示例以满足我的需要。
curl -X GET 'https://api.newrelic.com/v2/servers.json' \
-H 'X-Api-Key:12345689' -i \
-G -d 'filter[host]=server1'
Ruby代码:
require 'net/http'
uri = URI.parse('https://api.newrelic.com/v2/servers.json')
request = Net::HTTP::Get.new uri.request_uri
res = Net::HTTP.start(uri.host, uri.port,
:use_ssl => uri.scheme == 'https') {|http| http.request request}
request.initialize_http_header({'X-Api-Key' => '12345689'})
request.initialize_http_header({'Accept' => 'application/json'})
request.initialize_http_header({'Content-Type' => 'application/json'})
request.set_form_data({"filter[host]" => "server1"})
response = res.request(request)
错误信息:
test.rb:16:in `<main>': undefined method `request' for #<Net::HTTPUnauthorized 401 Unauthorized readbody=true> (NoMethodError)
在 Ruby 中,您可以使用反引号 (`
) 简单地获取命令的输出,您只需要转义特殊字符,就像在所有其他字符串中一样。所以它会是:
`curl -X GET 'https://api.newrelic.com/v2/servers.json' -H 'X-Api-Key:12345689' -i -G -d 'filter[host]=server1'`
应该看起来像这样:
require 'net/http'
uri = URI('https://api.newrelic.com/v2/servers.json')
uri.query = URI.encode_www_form({ 'filter[host]' => 'server1' })
req = Net::HTTP::Get.new(uri)
req['X-Api-Key'] = '123456789'
http = Net::HTTP.new(uri.hostname, uri.port)
http.use_ssl = true
response = http.request(req)
p response.read_body
我是 ruby 的新手,但我正在使用它。有人可以帮我将这个 curl 命令翻译成 Ruby 吗?
我一直在努力调整其他 ruby 示例以满足我的需要。
curl -X GET 'https://api.newrelic.com/v2/servers.json' \
-H 'X-Api-Key:12345689' -i \
-G -d 'filter[host]=server1'
Ruby代码:
require 'net/http'
uri = URI.parse('https://api.newrelic.com/v2/servers.json')
request = Net::HTTP::Get.new uri.request_uri
res = Net::HTTP.start(uri.host, uri.port,
:use_ssl => uri.scheme == 'https') {|http| http.request request}
request.initialize_http_header({'X-Api-Key' => '12345689'})
request.initialize_http_header({'Accept' => 'application/json'})
request.initialize_http_header({'Content-Type' => 'application/json'})
request.set_form_data({"filter[host]" => "server1"})
response = res.request(request)
错误信息:
test.rb:16:in `<main>': undefined method `request' for #<Net::HTTPUnauthorized 401 Unauthorized readbody=true> (NoMethodError)
在 Ruby 中,您可以使用反引号 (`
) 简单地获取命令的输出,您只需要转义特殊字符,就像在所有其他字符串中一样。所以它会是:
`curl -X GET 'https://api.newrelic.com/v2/servers.json' -H 'X-Api-Key:12345689' -i -G -d 'filter[host]=server1'`
应该看起来像这样:
require 'net/http'
uri = URI('https://api.newrelic.com/v2/servers.json')
uri.query = URI.encode_www_form({ 'filter[host]' => 'server1' })
req = Net::HTTP::Get.new(uri)
req['X-Api-Key'] = '123456789'
http = Net::HTTP.new(uri.hostname, uri.port)
http.use_ssl = true
response = http.request(req)
p response.read_body