Доступ к параметрам заголовка в вызове RestClient API

Я делаю вызов API RestClient для одного из моих контроллеров следующим образом:

RestClient.get(url,{:secret_key => "abcd"})

Но когда я печатаю параметры в своем контроллере следующим образом:

p params

Я не могу найти secret_key в контроллере. Из https://github.com/rest-client/rest-client/blob/master/lib/restclient.rb#L71 Я узнал, что параметры заголовка передаются в вызове Get RestClient API, как указано выше.

Но я не знаю, как получить доступ к заголовку. Так что, если кто-то поможет мне разобраться в этом, я буду очень благодарен.


person Joy    schedule 11.12.2013    source источник


Ответы (4)


Если вы хотите получить secret_key в хэше параметров, вы можете передать этот параметр через строку URL, например:

url = "http://your.api?secret_key=secret"
RestClient.get(url)

или если вы хотите передать secret_key через заголовки, вы должны:

RestClient.get(url, {"secret_key" => "secret"})

в контроллере рельсов:

secret_key = request.headers["secret_key"]
=> "secret"
person SergeyKutsko    schedule 11.12.2013
comment
Rails добавляет HTTP_ в начало заголовков, чтобы к нему можно было получить доступ с помощью: request.headers['HTTP_SECRET_KEY'] - person 23inhouse; 24.05.2016

Вы устанавливаете заголовок и проверяете параметры.

Итак, первый параметр — это параметры запроса, второй — заголовки.

RestClient.get url, {:secret_key => "abcd"}, {:user_agent => user_agent}

Если вы хотите отправить только параметры, выполните

RestClient.get url, :params => {:secret_key => "abcd"}

Если вы хотите проверить заголовок ответа (RestClient.get(url,{:secret_key => "abcd"})), сделайте

response['secrect_key']
person Hitham S. AlQadheeb    schedule 11.12.2013

Вы можете передать параметры http через URL следующим образом:

RestClient.get("http://your.api?secret_key=secret")
person Community    schedule 13.12.2013

Для моей версии rest-client (1.6.7) подпись для RestClient.get указывает параметры HTTP HEADER во втором аргументе:

  def self.get(url, headers={}, &block)
    Request.execute(:method => :get, :url => url, :headers => headers, &block)
  end

Что я помню для RestClient.post, так это то, что параметры HTTP HEADER можно указывать без фигурных скобок:

RestClient.post(url, :content_type => "application/pdf", :accept => "application/json")

Я предполагаю, что RestClient.get работает аналогичным образом.

person Kode Charlie    schedule 11.12.2013