【问题标题】:Automatically get the default port for request自动获取请求的默认端口
【发布时间】:2019-07-20 23:52:40
【问题描述】:

我目前有以下代码:

    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 net-http


    【解决方案1】:

    您将使用 ruby​​ 的动态调度。

    port = Net::HTTP.send("#{protocol}_default_port")
    endpoint = Net::HTTP.new(host, port)
    endpoint.use_ssl = protocol == 'https'
    
    request = Net::HTTP::Get.new("/item/#{item}")
    request['Authorization'] = "Bearer #{key}"
    response = endpoint.request(request)
    

    OR 以更优雅的方式:

    path = URI('https://example.com')
    
    Net::HTTP.start(path.host, path.port, use_ssl: path.scheme == 'https') do |http|
      request = Net::HTTP::Get.new path
      request['Authorization'] = "Bearer #{key}"
      response = http.request(request)
    end
    

    【讨论】:

      猜你喜欢
      • 2011-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多