У меня есть код ошибки 404, если я заменяю значение в полезной нагрузке при использовании гем Фарадея для вызова запроса - PullRequest
0 голосов
/ 12 февраля 2019

Я изучаю программирование на Ruby и создаю проект тестирования API.У меня есть запрос на конкретный сайт, и я использую драгоценный камень Фарадея.Вот мой код:

conn = Faraday.new
f_response = conn.post do |req|
  req.url 'https://api.abcxyz.vn/v2/tokens'
  req.headers['Content-Type'] = 'application/json'
  req.body = '{"email": "xxx@gmail.com","password": "abc123","grant_type": "password"}'
end

Запрос в порядке, и я получил успешный код 201, как и ожидал.Но я не понимаю формат req.headers['Content-Type'] = 'application/json'.Это хеш или массив.Потому что если я заменю свой код следующим образом:

request_headers = {"Content-Type" => "application/json"}
conn = Faraday.new
f_response = conn.post do |req|
  req.url 'https://api.abcxyz.vn/v2/tokens'
  req.headers = request_headers
  req.body = '{"email": "xxx@gmail.com","password": "abc123","grant_type": "password"}'
end

В результате получится 404 кода ошибки.Пожалуйста, помогите мне с этим делом.Плюс, у меня есть другой API, который требует 'X-Access-Token' в полях заголовка.Как я могу ввести его в полезную нагрузку.

1 Ответ

0 голосов
/ 22 февраля 2019

req.headers - это хэш, но с помощью req.headers = вы стираете все заголовки, которые Фарадей установил автоматически, например, «User-Agent».Чтобы добавить новые заголовки, сделайте то же самое, что вы сделали для Content-Type:

conn = Faraday.new
f_response = conn.post do |req|
  req.url 'https://api.abcxyz.vn/v2/tokens'
  req.headers['Content-Type'] = 'application/json'
  req.headers['X-Access-Token'] = 'x-access-token-goes-here'
  req.body = '{"email": "xxx@gmail.com","password": "abc123","grant_type": "password"}'
end
...