Ruby 自动获取请求的默认端口

Ruby 自动获取请求的默认端口,ruby,net-http,Ruby,Net Http,我目前拥有以下代码: if protocol == 'http' port = Net::HTTP.http_default_port() endpoint = Net::HTTP.new(host, port) else port = Net::HTTP.https_default_port() endpoint = Net::HTTP.new(host, port) endpoint.use_ssl = true

我目前拥有以下代码:

    if protocol == 'http'
      port = Net::HTTP.http_default_port()
      endpoint = Net::HTTP.new(host, port)
    else
      port = Net::HTTP.https_default_port()
      endpoint = Net::HTTP.new(host, port)
      endpoint.use_ssl = true
    end
    request = Net::HTTP::Get.new("/item/#{item}")
    request['Authorization'] = "Bearer #{key}"
    response = endpoint.request(request)

有没有一种方法可以简化这个过程,这样我就不必决定自己使用的默认端口了?

您可以使用ruby的动态调度

port=Net::HTTP.send{protocol}\u默认\u端口 endpoint=Net::HTTP.newhost,端口 endpoint.use_ssl=协议=='https' request=Net::HTTP::Get.new/item/{item} 请求['Authorization']=承载{key} response=endpoint.requestrequest 或者以更优雅的方式:

path=URI'https://example.com' Net::HTTP.startpath.host,path.port,使用_ssl:path.scheme==“https”do | HTTP| request=Net::HTTP::Get.new路径 请求['Authorization']=承载{key} response=http.requestrequest 终止