Как отлаживать/отображать запрос, отправленный с помощью RestClient
Я пытаюсь использовать RestClient для доступа к веб-сервису с использованием метода post. Я отправляю токен авторизации, как указано, но я все еще получаю ошибку статуса 403, что означает, что мне запрещено использовать этот api. Есть ли способ, чтобы я мог видеть, что запрос отправляется с почтой http, чтобы я мог проверить заголовки? Я не могу найти какой-либо пример или какую-либо документацию, в которой упоминается, как это сделать?
Мой код похож на этот:
token = get_token
response = RestClient.post "https://api-dev.xxx.com/software/services/search/ABC",
:authorization => "Bearer #{token}"
Ответы
Ответ 1
Вы можете попробовать включить ведение журнала RestClient
и посмотреть, обеспечивает ли это любой полезный вывод:
RESTCLIENT_LOG=stdout path/to/my/program
или если вы используете Rails
RESTCLIENT_LOG=stdout bundle exec passenger
заменив passenger
на ваш выбор сервера. Это перенаправит все записи на стандартный вывод (консоль).
Лично я предпочитаю использовать более подробные инструменты, когда мне нужно проверить или устранить HTTP-запросы.
Вы можете попробовать curl
или wget
, если вам нравится командная строка или одно из многочисленных расширений браузера, которые позволяют легко выполнять запросы, проверять вывод, сохранять в будущем, настраивать разные среды и т.д. Оба Postman и Расширенный клиент REST являются хорошим выбором.
Ответ 2
Если вы делаете больше развития REPL, это может быть так же просто, как добавить
RestClient.log = 'stdout'
к вашему коду.
Вы можете найти другие допустимые значения в документах.
Ответ 3
Если вы не знаете (или хотите потрудиться) пройти в env. переменная для вашего приложения (в моем случае это был Passenger/Rails), выполните что-то подобное:
$ cat >/usr/share/foreman/config/initializers/00_rest_client.rb <<'EOT'
require 'rest_client'
RestClient.log =
Object.new.tap do |proxy|
def proxy.<<(message)
Rails.logger.info message
end
end
EOT