Ruby Post 带有基本身份验证和多个参数的请求

Ruby Post Request with Basic Auth and Multiple Params

我在做一些可能很简单的事情时遇到了可笑的困难...

我正在尝试 运行 ruby 中的一个简单 POST 请求。我查看了 curb、typhoeus、rest-client 等...post 请求具有基本身份验证(通过 api 密钥)和两个参数...

我在下面以 curl 形式写出了命令,效果很好。

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

谁能帮我把这个翻译成ruby?我不介意用typhoeus, curb等等...只要能用...

我以前使用过此工具并取得了一些成功。 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 标准库中)。

rest-client 也很简洁。

require 'rest-client'

RestClient::Request.execute(method: :post, url: 'https://api.com/v1',
                            user: 'any_string', password: 'abc123',
                            payload: {var1: 'help', var2: 'me'}
)