Приложение запроса JSON API (рельсы), рендеринг результатов - PullRequest
0 голосов
/ 08 февраля 2012

Мне нужно разработать небольшое приложение на Rails, которое отправляет запрос в JSON API, вводит параметры в исходную форму, проверяет, получим ли мы реальный ответ, и затем отображает результаты в виде (html.erb).

Знаете ли вы, где я могу получить хороший материал для этих шагов?Любая помощь приветствуется.

Я читаю несколько близких примеров:

    params_string = "whatever"
    params_string_with_api_key = params_string + "&" + @@API_KEY
    hashkey = Digest::SHA1.hexdigest(params_string_with_api_key)
    params_string += "&hashkey=#{hashkey}"

    res = Net::HTTP.get_response("api.somecompany.com", "/some/url.json?#{params_string}")

    res_sha1 = Digest::SHA1.hexdigest(res.body + @@API_KEY)

    @verified = res["X-Somecompany-Response-Signature"] == res_sha1

    parsed_json = ActiveSupport::JSON.decode(res.body)
    @results = parsed_json["results"]

Всегда ли необходимо кодировать строку параметров при выполнении запроса Net :: HTPP?Есть ли другой способ?

Что значит params_string += "&hashkey=#{hashkey}"?

Спасибо!

1 Ответ

0 голосов
/ 08 февраля 2012

Что означает params_string + = "& hashkey = # {hashkey}"?

params_string - это строка, которая выглядит как ?param1=val&param2=val2.... Ваш последний фрагмент кода просто добавляет другой параметр в строку. Если ваша проблема связана с фрагментом #{}, этот синтаксис в строке в двойных кавычках ruby ​​позволяет использовать значение переменной.

Всегда ли необходимо кодировать строку параметров при выполнении запроса Net :: HTPP? Есть ли другой способ?

Я не вижу кодируемой строки параметров здесь. Все, что я вижу, это проверка результатов, выполненная путем сравнения заголовка ответа с телом ответа SHA1.

На самом деле не имеет отношения к вашим вопросам: я недавно ушел из Net :: HTTP, испытывая проблемы с segfault. Теперь я использую Typhoeus для всех запросов через сеть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...