Как отправить данные в post-запросе с помощью RestClient

Я пытаюсь имитировать запрос curl с помощью драгоценного камня RestClient Ruby, и до сих пор у меня было много проблем с отправкой полезной нагрузки. Мой запрос curl выглядит примерно так

curl URL -X POST -u API_KEY -d '{"param_1": "1"}'

Я пытался воспроизвести это с помощью RestClient, используя что-то вроде этого:

RestClient::Request.execute(method: :post, url: URL, user: API_KEY, payload: {"param_1" => "1"})

увы, я продолжаю получать ошибки 400 - Bad запросов при этом. Я посылаю данные не в ту сторону? Должен ли я использовать что-то другое чем полезная?

3 ответов


изменения:

payload: {"param_1" => "1"})

в:

payload: '{"param_1": "1"})'

кроме того, указать headers.

Итак, это будет:

RestClient::Request.execute(method: :post,
                            url: 'your_url',
                            user: 'API_KEY',
                            payload: '{"param_1": "1"}',
                            headers: {"Content-Type" => "application/json"}
                           )

Просто Измените:

payload: {"param_1" => "1"}

В:

payload: {"param_1" => "1"}.to_json

Итак, тогда это становится:

RestClient::Request.execute(method: :post,
                            url: 'your_url',
                            user: 'API_KEY',
                            payload: {"param_1" => "1"}.to_json,
                            headers: {"Content-Type" => "application/json"}
                           )

оказывается, мне пришлось добавить аргумент, чтобы указать, что мои данные были в формате JSON. Правильный ответ был примерно такой:: RestClient::Request.execute(method: :post, url: URL, user: API_KEY, payload: '{"param_1": "1"}', headers: {"Content-Type" => "application/json"})