В моем приложении у меня есть пользовательский проход в форме, которая запускает запрос API, а затем отображает результаты запроса.Передача ключа API и параметров с RestClient
Я разрешаю пользователю выбирать многие или несколько параметров. Проблема, которую я получаю, - ошибка авторизации 401, и я считаю, что это связано с тем, что apikey не распознается (нет пароля, имени пользователя, необходимого для api и без ограничений).
Применение:
post '/search' do
phrase = params.fetch "phrase" #mandatory
@delimiters = ""
start_date = params.fetch "start_date"
start_date.empty? ? start_date = "" : @delimiters << "From #{start_date},"
end_date = params.fetch "end_date"
end_date.empty? ? end_date = "" : @delimiters << "To #{end_date}"
api_result = RestClient::Request.execute(method: :get, url: "capitolwords.org/api/1/text.json?phrase=#{phrase}
&page=0&apikey=",
headers: {params: {:start_date => start_date,
:end_date => end_date},
:Authorization => ENV['SUNLIGHT_API_KEY']},
timeout: 10)
end
Разделитель является то, что я использую, чтобы охватить все параметры, передаваемые в так что я могу показать пользователю, что они разыскиваемого. Я прочитал документацию по адресу https://github.com/rest-client/rest-client, и они не упоминают передачу ключей api.
Это часть процесса рефакторинга - проходя по параметрам по одному, как # {@} parameter_example работает, но делает мой код менее читаемым и я вручную необходимо настроить @parameter_example = "& parameter_example = # {} parameter_example «что кажется слишком многословным.
ОК, я думаю, это может быть правильным решением. На данный момент он не распознает фразу как параметр. – user3162553
@ user3162553 Вы можете сделать что-то подобное для устранения неполадки, замените: url hostname на 127.0.0.1:8888 или localhost: 8888 (8888 - это просто случайный номер порта, используйте тот, который вам подходит), а на другом терминах запускайте что-то вроде 'nc -l 8888' (nc - инструмент netcat). Затем выполните ваш RestClient :: Request и проверьте, какой запрос RestClient отправляет netcat. – egwspiti
ОК, я нашел проблему - мне нужно передавать параметры только в том случае, если они не ноль. Он передает params в url как & param = & param =, даже если нет значения. Благодарю. – user3162553