Запрос Ruby Post с базовой аутентификацией и несколькими параметрами

Мне нелепо нелегко делать что-то простое...

Я пытаюсь запустить простой запрос POST в ruby. Я посмотрел на обочину, тайфуус, rest-client и т. Д. У пост-запроса есть базовая аутентификация (через ключ api) и два параметра...

У меня есть команда, записанная в форме curl ниже, которая работает отлично.

curl -X POST https://api.com/v1 -u any_string:abc123 -d var1="help" -d var2="me"

Может кто-нибудь помочь мне перевести это на рубин? Я не возражаю против использования Typhoeus, бордюра и т. Д., Пока это работает...

2 ответа

Решение

Я использовал этот инструмент раньше с некоторым успехом. https://jhawthorn.github.io/curl-to-ruby/

Ваше заявление curl генерирует этот код Ruby.

require 'net/http'
require 'uri'

uri = URI.parse("https://api.com/v1")
request = Net::HTTP::Post.new(uri)
request.basic_auth("any_string", "abc123")
request.set_form_data(
  "var1" => "help",
  "var2" => "me",
)

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
  http.request(request)
end

# response.code
# response.body

В Ruby существует около миллиона различных библиотек HTTP-запросов, но иногда просто написать его в Net HTTP (Net HTTP входит в стандартную библиотеку Ruby).

Отдыхающий клиент также довольно лаконичен для этого.

require 'rest-client'

RestClient::Request.execute(method: :post, url: 'https://api.com/v1',
                            user: 'any_string', password: 'abc123',
                            payload: {var1: 'help', var2: 'me'}
)
Другие вопросы по тегам