Ruby Restclient different double point or astrophobe 并且顺序重要

Ruby Restclient different double point or astrophobe and is order important

我是 ruby RestClient 的新手。我已经搜索了很多这个 restclient 的例子,并且在 docruby 中。对我来说,使用 ruby restclient 非常重要,可以非常快速地获取数据。 但有些不是答案,这就是我想向大家提问的原因。

我正在研究这个 ruby restclient 示例代码:

restClient = RestClient::Request.new(       
    :method     => :get,
    :url        => url,
    :verify_ssl => true, #required using https
    :content_type => :json,
    :accept => :json,             
    :headers    => {
        :Authorization => "Bearer #{token}",
    }
)   
result = restClient.execute()

我的第一个问题是使用双点和astrophobe有什么不同?

restClient = RestClient::Request.new(
    :method     => :get,
    :method     => 'get',
    ...
)

第二个问题是,代码中的 sequences/order 是先 url 然后方法还是方法然后 url 等等?

restClient = RestClient::Request.new(
    :url        => :url,
    :method     => :get,
    ...
)

#or

restClient = RestClient::Request.new(
    :method     => :get,
    :url        => :url,
    ...
)

第三个问题是,关于接受 headers。有些人将 accept 和 content-type 放在 headers 中,有些则没有,有什么不同?

restClient = RestClient::Request.new(
    :content_type => 'application/json',
    :accept       => 'application/json',
    
    #or
    
    :headers    => {
        'hello-token' => "Bearer #{token}",
        'content_type'=> 'application/json',
        'ACCEPT'      => 'application/json'
    }
    
)

使用双点和astrophobe有什么区别?

:get 是符号,'get' 是字符串。

如果 gem 能够处理两者,则取决于 gem 的实现。因为 RestClient 文档在其示例中使用了 Symbol,所以我建议您也这样做。

但实际上 - 至少在当前版本中 - 它没有什么不同,因为 gem 无论如何都会在内部将参数转换为字符串(参见 initialize and normalize_method

在重要代码

中是sequences/order

从理论上讲,哈希是一种无序的数据结构。因此在这种情况下顺序不重要。但请记住,Ruby 的哈希实现实际上是在迭代哈希时保留插入键的顺序。

接受headers

我没有在 gem 的文档中找到他们使用第一个版本的任何示例。您真的尝试了两个版本吗?当两者都起作用时,我会感到惊讶。因此我建议使用 header: 版本。