Ruby Restclient отличается двойной точкой или астрофобом и важен для порядка - PullRequest
0 голосов
/ 07 августа 2020

Я новичок в ruby RestClient. У меня есть много примеров этого restclient и do cruby. Для меня важно при использовании 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()

Мой первый вопрос: что отличается от использования двойной точки и астрофоба?

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

Второй вопрос: важны ли последовательности / порядок в коде, например, первый URL-адрес, затем метод или метод, затем URL-адрес и так далее?

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

#or

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

Третий вопрос касается принятия для вставки в заголовки. некоторые помещают accept и content-type в заголовки, а некоторые нет, в чем разница?

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

1 Ответ

1 голос
/ 07 августа 2020

Чем отличается использование двойной точки и астрофоба?

:get - это символ, 'get' - это строка.

Это зависит от реализации драгоценного камня, если он может обрабатывать и то, и другое. Поскольку документация RestClient использует в своих примерах символ, я бы рекомендовал сделать то же самое.

Но на самом деле - по крайней мере, в его текущей версии - это не имеет значения, потому что гем все равно переводит аргумент в строку (см. initialize и normalize_method)

- это последовательности / порядок в коде важны

Теоретически, a ha sh - это неупорядоченная структура данных. Поэтому порядок в данном случае не имеет значения. Но имейте в виду, что реализация ha sh в Ruby фактически сохраняет порядок, в котором ключи вставляются при повторении ha sh.

Accept headers

Я не нашел в документации гема ни одного примера, в котором использовалась бы первая версия. Вы действительно пробовали обе версии? Я был бы удивлен, если бы оба работали. Поэтому я предлагаю использовать версию header:.

...